java list.remove的坑

在做项目的过程中用到了,list.remove,踩了几个坑,在此记录一下

1.

List<Integer> list

list.remove(i);

当list内元素是Integer类型时,要注意remove的参数,是元素,还是元素的编号。

2.

list在remove是发生java.util.ConcurrentModificationException异常

需要使用迭代器的remove,不能直接用list的remove

public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("111");
list.add("222");
list.add("333");
list.add("444");
list.add("555");
list.add("666");
list.add("777");
list.add("888");

Iterator<String> it=list.iterator();
int i=0;
while (it.hasNext()){
String s=it.next();
i++;
if(i==2){
it.remove();
System.out.println("remove:"+s);
System.out.println();
}
}
}

3.
for(int i=0;i<list.size();i++){
  list.remove(i);
}
遍历list执行remove时,list的size会变小,可能会产生越界,建议用迭代器遍历移除

猜你喜欢

转载自www.cnblogs.com/jakin3130/p/10948679.html