java-list循環過程中刪除元素的三種方式對比。
1.通過 iterator(正確做法)
2.普通for循環(java.util.ConcurrentModificationException 異常)
3.foreach循環(java.util.ConcurrentModificationException 異常)
package com.zhong.jpa_demo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* TestListRemove
*/
public class TestListRemove {
public static void main(String[] args) {
testListIteratorDelete();
testListForDelete();
testListForeachDelete();
}
/**
* 通過 iterator 刪除
*/
public static void testListIteratorDelete() {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
Iterator<String> it = list.iterator();
int i = 0;
while (it.hasNext()) {
System.out.print(it.next());
if (i == 0) {
it.remove();
}
i++;
}
System.out.println();
// System.out.println(list.size());
}
/**
* 普通for 循環刪除
*/
public static void testListForDelete() {
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
for (int i = 0; i < list.size(); i++) {
if (i == 1) {
list.remove(i); // java.util.ConcurrentModificationException
// 刪除特定元素後 break;
}
System.out.print(list.get(i));
}
System.out.println();
}
/**
* foreach 循環刪除
*/
public static void testListForeachDelete() {
List<String> list = new ArrayList<>();
list.add("x");
list.add("y");
list.add("z");
for (String item : list) {
if (item.equals("z")) {
list.remove(item); // java.util.ConcurrentModificationException
// 刪除特定元素後 break;
}
System.out.print(item);
}
System.out.println();
}
}