首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java -在列表中迭代时向列表中添加元素

Java -在列表中迭代时向列表中添加元素
EN

Stack Overflow用户
提问于 2012-07-24 12:33:20
回答 4查看 47.3K关注 0票数 26

我想避免得到ConcurrentModificationException。我该怎么做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-24 12:53:53

您可以使用在迭代过程中支持remove/add方法的ListIterator

代码语言:javascript
复制
ListIterator<Book> iter = books.listIterator();
while(iter.hasNext()){
    if(iter.next().getIsbn().equals(isbn)){
        iter.add(new Book(...));
    }
}
票数 52
EN

Stack Overflow用户

发布于 2012-07-24 12:43:28

您可以使用带有索引的for循环,而不是使用迭代器。例如:

代码语言:javascript
复制
int originalLength = list.length();
for (int i = 0; i < originalLength; i++) {
  MyType mt = list.get(i);
  //... processing
  //... insertions
}
票数 11
EN

Stack Overflow用户

发布于 2012-07-24 12:52:53

您想要使用ListIterator。您可以从任何类型的列表中获取其中一个,但是为了提高效率,您可能希望从LinkedList中获取一个。

代码语言:javascript
复制
import java.util.*;
class TestListIterator {
  public static void main(String[]args) {
    List<Integer> L = new LinkedList<Integer>();
    L.add(0);
    L.add(1);
    L.add(2);
    for (ListIterator<Integer> i = L.listIterator(); i.hasNext(); ) {
      int x = i.next();
      i.add(x + 10);
    }
    System.out.println(L);
  }
}

打印[0, 10, 1, 11, 2, 12]

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11624220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档