在本博主旧文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 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对象"); }