1. 没有完全删除想要删除的数据
描述:使用for循环删除list中的所有的数据,结果没有删除干净
public class ListExample {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
for (int i = 0; i < list.size(); i++) {
System.out.println( i + ": " + list.remove(i));
System.out.println(Arrays.toString(list.toArray()));
System.out.println("最终的list: " + Arrays.toString(list.toArray()));
}
}
}
打印的Log:
0: a
[b, c]
1: c
[b]
最终的list: [b]
以上,可以看到元素【b】没有删掉。
解决方案:
List<String> anotherList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
anotherList.add(list.get(i));
}
list.removeAll(anotherList);
2. java.util.ConcurrentModificationException
for (String str : list) {
System.out.println(list.remove(str));
System.out.println(Arrays.toString(list.toArray()));
}