添加 ArrayList 元素时如何避免 "ConcurrentModificationException"?
How to avoid "ConcurrentModificationException" while add ArrayList elements?
我正在尝试按特定顺序将项目添加到 ArrayList
Iterator<Rating> it = arr.iterator();
while(it.hasNext()){
Rating o = it.next();
int index = arr.indexOf(o);
if(o.getRating() < this.getRating()) {
arr.add(index, this);
}
}
我在尝试这样做时遇到了 ConcurrentModificationException。有什么简单的方法可以解决这个问题吗?
也许以下合集之一将代替 ArrayList
?
A CopyOnWriteArrayList 将让您在不引起 ConcurrentModificationException
的情况下写作。是否是一个好的选择取决于写入迭代的相对频率。
此外,如果有并发使用的考虑,请考虑PriorityQueue as it will automatically handle ordering, or PriorityBlockingQueue。
我正在尝试按特定顺序将项目添加到 ArrayList
Iterator<Rating> it = arr.iterator();
while(it.hasNext()){
Rating o = it.next();
int index = arr.indexOf(o);
if(o.getRating() < this.getRating()) {
arr.add(index, this);
}
}
我在尝试这样做时遇到了 ConcurrentModificationException。有什么简单的方法可以解决这个问题吗?
也许以下合集之一将代替 ArrayList
?
A CopyOnWriteArrayList 将让您在不引起 ConcurrentModificationException
的情况下写作。是否是一个好的选择取决于写入迭代的相对频率。
此外,如果有并发使用的考虑,请考虑PriorityQueue as it will automatically handle ordering, or PriorityBlockingQueue。