在遍历Java中的ArrayList时,常用的方式有三种:
- 普通for循环遍历
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
for (int i = 0; i < list.size(); i++) {
// 处理元素
System.out.print(list.get(i) + " ");
}
- 使用Iterator迭代器遍历
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()){
System.out.print(iterator.next() + " ");
}
- 使用for each循环遍历
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
for (int i: list){
System.out.print(i + " ");
}
如果在遍历时既不需要增加元素,也不需要删除元素,就应该使用第三种
方法,因为写法比较简洁。
如果在遍历时只需要删除元素,应该使用第二种
方法,保证程序正确运行,例如:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()){
int a = iterator.next();
if (a == 2){
iterator.remove();
}else{
System.out.print(a + " ");
}
}
如果在遍历时只需要增加元素,应该使用第一种
方法,保证程序正确运行,例如:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
for (int i = 0; i < list.size(); i++) {
int a = list.get(i);
if (a == 1){
list.add(0);
} else{
System.out.print(a + " ");
}
}
如果在遍历时既需要增加元素,又需要删除元素,则也应该使用第一种
方法,但是需要注意一个细节,代码如下:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
for (int i = 0; i < list.size(); i++) {
int a = list.get(i);
if (a % 2 == 0){
list.remove(a);
i--; // 删除元素后必须将循环控制变量i减一
}else {
list.add(0);
}
}