如何遍历Collection中的元素?原理是什么?
参考答案
for循环下标遍历,只适用于List集合,这种方法缺点是不够通用,对于无下标的集合如Set不适用:
List<Integer> list = new ArrayList<>(); for(int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); }
迭代器遍历,可以适用于任何Collection集合:
Collection<Integer> list = new ArrayList<>(); Iterator<Integer> iter = list.iterator(); while(iter.hasNext()){ System.out.println(iter.next()); }
foreach循环遍历,原理是在javac编译时会生成Iterator代码来完成实际遍历
Collection<Integer> list = new ArrayList<>(); for(Integer i: list){ System.out.println(i); }
编译成class后的伪代码如下:
Collection<Integer> list = new ArrayList<>(); Iterator<Integer> iter = list.iterator(); while(iter.hasNext()){ Integer i = iter.next(); System.out.println(i); }