安全的remove方式,是使用迭代器的remove方法
Iterator<Integer> it=list.iterator();
while(it.hasNext()){
if(it.next()==3){
it.remove();
}
}
System.out.println(list);
注意:以下remove方式虽然不一定报错,但是会导致list中index左移,导致其中一些元素遍历不到,从而引起数据不准
不建议使用
注意:以下remove方式虽然不一定报错,但是会导致list中index左移,导致其中一些元素遍历不到,从而引起数据不准
不建议使用
例如 listA中有3个元素,我们将第二个进行了remove,这时候第三个元素就的index变为2,如果我们也想同时remove第三个元素,就会发现没remove掉
public class SimpleTest {
public static void main(String[] args) {
test1();
}
private static void test1() {
List<String> tl = new ArrayList<>();
tl.add("aaa");
tl.add("bbb");
// 都不报错
for (int i = 0; i < tl.size(); i++) {
if (tl.get(i).equals("aaa")) {
tl.add("ccc");
tl.remove(tl.get(i));
}
}
// 增加报错
for (String t: tl) {
if (t.equals("aaa")) {
tl.add("ccc");
tl.remove(t);
}
}
// 增加和删除都报错
tl.forEach(t -> {
if (t.equals("aaa")) {
tl.add("ccc");
tl.remove(t);
}
});
System.out.println(tl);
}
}