本文主要介绍Java中可以使用的几种遍历方式。
Java中的遍历
- 定义
- 循环(for、while)
- 遍历foreach(for)
- foreach(for)过程中如何修改数据的问题
- 解决方案
- 迭代器(Iterator)
- java.util.Arrays.toString()
定义
遍历(Traversal):指沿着某条搜索路线,依次对树(或图)中每个节点均做一次访问。我自己的理解,“遍历”就是指将所给结构中的内容逐一访问,但是是否进行操作,还要看需求。
循环(for、while)
for(int i=0;i<=arr.length;i++)
white(n != 0)
int[] arr= {1,2,3,4,5,6,7,8,9};
arr.add(4);
对否?
遍历foreach(for)
本身基于Iterator实现,效率不高;不能操作集合。
int[] arr= {1,2,3,4,5,6,7,8,9};
//无需下标
for(int a : arr) {
System.out.println(a);
}
foreach(for)过程中如何修改数据的问题
因为增强for循环(foreach循环)本质上是隐式的iterator,由于在删除和添加的时候会导致modCount发生变化,但是没有重新设置expectedModCount,当你使用list.remove()后遍历执行iterator.next()时,方法检验modCount的值和的expectedModCount值,如果不相等,就会报ConcurrentModificationException。
解决方案
使用iterator.remove();正确与否,待确认
详见Java集合——遍历集合元素并修改
迭代器(Iterator)
迭代器Iterator只能在集合中使用。集合有Connlection 、Map两种, 这两种都是接口类型。Connlection中的子接口有List ,List有实现类 ArrayList。
详细代码看迭代器和SET的遍历。
上面各个类型的代码示例,可以参考这篇。
java.util.Arrays.toString()
利用jdk自带的方法 --> java.util.Arrays.toString()
待验证
public class ThroughTheArray {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {12,4,1,66,54,6,74,-3};//静态创建一个数组。why,是因为在静态主函数里?
System.out.println(java.util.Arrays.toString(arr));
}
}