繁体   English   中英

添加 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。 有没有一些简单的解决方案来解决这个问题?

也许以下 collections 之一将代替ArrayList服务?

CopyOnWriteArrayList将让您在写入时不会导致ConcurrentModificationException 它是否是一个好的选择取决于写入迭代的相对频率。

此外,请考虑PriorityQueue ,因为它会自动处理排序,或者如果有并发使用的考虑,请考虑PriorityBlockingQueue

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM