在本博主旧文Java ArrayList类遍历方法基础上添加数组ArrayList对象的“forEach”方法遍历它的用例

ArrayList集合

ArrayList集合是程序中最常见的一种集合,它属于引用数据类型(类)。

在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,

ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。
下面我们看一下ArrayList源码,从它继承类、实现接口来了解一下它能够支持那些方式的遍历方法

rxjava 遍历 java如何遍历arraylist_数组

 

 

 通过对ArrayList继承类、实现接口深入分析,我们可以得到以下N种遍历方法

public static void main(String[] args) {
    ArrayList arr= new ArrayList();
    initList(arr);
    testByFor( arr);
    testByForeach( arr);
    testByIterator( arr);
    testByListIterator( arr);
    testByForEach( arr);
}
/**
 * 初始化数组 ArrayList
 * @param arr
 */
private  static void initList(ArrayList arr){
    arr.add("Java");
    arr.add("C#");
    arr.add("Php");
    arr.add("Ruby");
    arr.add("Swift");
    arr.add(null);
}

方式一:For循环

/**
 * For循环来遍历数组 ArrayList
 * @param arr
 */
private static  void testByFor(ArrayList arr)
{
    System.out.println("开始通过for指令来测试ArrayList对象");
    for(int i=0;i<arr.size();i++) {
        System.out.println(arr.get(i));
    }
    System.out.println("开始通过for指令来测试ArrayList对象");
}

方式二:增强for循环遍历ArrayList:Foreach

/**
 * Foreach循环来遍历数组
 * @param arr
 */
private static  void testByForeach(ArrayList arr)
{
    //foreach输出(jdk>=1.5)
    System.out.println("开始通过Foreach指令来测试ArrayList对象");
    for(Object o:arr) {
        System.out.println(o);
    }
    System.out.println("结束通过Foreach指令来测试ArrayList对象");
}

方式三:Iterator:迭代器遍历ArrayList

/**
 * 正向输出迭代器
 * @param arr
 */
private static  void testByIterator(ArrayList arr)
{
    System.out.println("开始通过iterator指令来测试ArrayList对象");
    Iterator<String> iterator = arr.iterator();
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }
    System.out.println("结束通过iterator指令来测试ArrayList对象");
}

方式四:ListIterator:双向迭代器遍历

/**
 * 双向迭代器
 * @param arr
 */
private static  void testByListIterator(ArrayList arr)
{
    System.out.println("开始通过ListIterator指令来测试ArrayList对象");
    ListIterator iterator=arr.listIterator();

    //正向输出
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }
    System.out.println("结束正向输出ArrayList对象");
    while(iterator.hasPrevious()) {
        System.out.println(iterator.previous());
    }
    System.out.println("结束正向输出ArrayList对象");
    System.out.println("结束通过iterator指令来测试ArrayList对象");
}
方式五:ArrayList对象的“forEach”方法遍历
/**
 *  使用数组ArrayList对象的forEach方法
 * @param arr
 */
private static  void testByForEach(ArrayList arr)
{
    //foreach输出(jdk>=1.8)
    System.out.println("开始通过Foreach指令来测试ArrayList对象");

    //Lambda表达式访问数组的例子
    arr.forEach(x->System.out.println(x));

    System.out.println("开始通过Foreach指令来测试ArrayList对象");
}