我想避免得到ConcurrentModificationException
。我该怎么做呢?
发布于 2012-07-24 12:53:53
您可以使用在迭代过程中支持remove/add方法的ListIterator
。
ListIterator<Book> iter = books.listIterator();
while(iter.hasNext()){
if(iter.next().getIsbn().equals(isbn)){
iter.add(new Book(...));
}
}
发布于 2012-07-24 12:43:28
您可以使用带有索引的for循环,而不是使用迭代器。例如:
int originalLength = list.length();
for (int i = 0; i < originalLength; i++) {
MyType mt = list.get(i);
//... processing
//... insertions
}
发布于 2012-07-24 12:52:53
您想要使用ListIterator
。您可以从任何类型的列表中获取其中一个,但是为了提高效率,您可能希望从LinkedList
中获取一个。
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]
。
https://stackoverflow.com/questions/11624220
复制相似问题