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

ArrayList集合

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

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

ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。

下面我们看一下ArrayList源码,从它继承类、实现接口来了解一下它能够支持那些方式的遍历方法

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

代码语言:javascript代码运行次数:0运行复制public static void main(String[] args) {

ArrayList arr= new ArrayList();

initList(arr);

testByFor( arr);

testByForeach( arr);

testByIterator( arr);

testByListIterator( arr);

testByForEach( arr);

}代码语言:javascript代码运行次数:0运行复制/**

* 初始化数组 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循环

代码语言:javascript代码运行次数:0运行复制/**

* For循环来遍历数组 ArrayList

* @param arr

*/

private static void testByFor(ArrayList arr)

{

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

for(int i=0;i

System.out.println(arr.get(i));

}

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

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

代码语言:javascript代码运行次数:0运行复制/**

* 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

代码语言:javascript代码运行次数:0运行复制/**

* 正向输出迭代器

* @param arr

*/

private static void testByIterator(ArrayList arr)

{

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

Iterator iterator = arr.iterator();

while (iterator.hasNext()) {

System.out.println(iterator.next());

}

System.out.println("结束通过iterator指令来测试ArrayList对象");

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

代码语言:javascript代码运行次数:0运行复制/**

* 双向迭代器

* @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对象");

}代码语言:javascript代码运行次数:0运行复制方式五: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对象");

}