LinkedList

时间:2015-06-29 13:22:40

标签: java

下面给出的代码不会抛出ConcurrentModificationException.But如果我在LinkedList中再添加2个元素,它会抛出异常。为什么?

List<String> list = new LinkedList<String>();
list.add("A");
list.add("B");

for (String s : list) {
    if (s.equals("B")) {
        list.remove(s);
    }
}

2 个答案:

答案 0 :(得分:2)

使用增强的for循环对项目进行迭代时,无法从集合中删除项目。你想要做的是:

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
  String s = iterator.next();
  if (s.equals("B")) {
    iterator.remove();
  }
}

答案 1 :(得分:1)

您无法从for循环中的列表中删除条目,您必须使用迭代器,如下所示:

List<String> list = new LinkedList<String>();
list.add("A");
list.add("B");
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {
  String entry = iterator.next();
  if(entry.equals("B") {
   iterator.remove();
  }
}