Java 遍历ArrayList的N种方法

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

ArrayList集合

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

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

ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。
下面我们看一下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对象");
}
原文地址:https://www.cnblogs.com/BlogNetSpace/p/15099362.html