java中List遍历删除元素
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.add("d");
list.add("d");
方法1:错误
//移除一个元素成功,移除2个元素报错:java.util.ConcurrentModificationException
for (String str : list) {
if ("d".equals(str)) {
list.remove(str);
}
}
方法2:正确
//正确 可删除多个
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String s = iterator.next();
if ("d".equals(s)) {
iterator.remove();//使用迭代器的删除方法删除
}
}
方法3:
//移除不干净
for (int i = 0; i < list.size(); i++) {
System.out.println("list当前长度:" + list.size());
if ("d".equals(list.get(i))) {
list.remove(i);
}
}
System.out.println("--------------");
System.out.println(list);
System.out.println("--------------");
list当前长度:7
list当前长度:7
list当前长度:7
list当前长度:7
list当前长度:6
--------------
[a, b, c, e, d]
--------------
list remove(对象) remove(下标) ;iterator remove() 无参数
以上基于java1.8
end