list集合删除操作注意的问题
-
如果对集合进行普通for循环进行删除数据,可能会导致索引越界异常
(访问list从后往前,从i=size-1至i=0,可以避免上述问题) -
使用迭代器,使用迭代器对象的remove()方法。
(使用迭代器或者增强for过程中,修改了集合的长度就会发生 ConcurrentModificationException异常)
public static void main(String args[]) {
List<String> famous = new ArrayList<String>();
famous.add("liudehua");
famous.add("madehua");
famous.add("liushishi");
famous.add("tangwei");
for (String s : famous) {
if (s.equals("madehua")) {
famous.remove(s);//这种会报ConcurrentModificationException错
}
}
Iterator<String> iterator = famous.iterator();
while (iterator.hasNext()) {
String next = iterator.next();
System.out.println(next);
if (next.equals("madehua")) {
// famous.remove(next);//这种会报ConcurrentModificationException错
iterator.remove();//这种可以
}
}
}