gpt4 book ai didi

java - 不可修改集合中的 ConcurrentModificationException

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:06:42 24 4
gpt4 key购买 nike

<分区>

我在下面有这段代码,我通过执行以下行得到了一个 ConcurrentModificationException:

filterCardsToDevice(getCollection());

代码:

private List<MyClass> filterCardsToDevice(Collection<MyClass> col) {
final List<MyClass> newList = new ArrayList<MyClass>();

for (MyClass myObj : col) {
long id = myObj.getId();
if (id < 0 || id > 0xFFFFFFFFl) {
// just a log here
} else {
newList.add(myObj);
}
}

return newList;
}

private final Map<Long, MyClass> map = new HashMap<Long, MyClass>();

public Collection<MyClass> getCollection() {
synchronized (map) {
return Collections.unmodifiableCollection(map.values());
}
}

堆栈是:

at java.util.HashMap$HashIterator.nextEntry(HashMap.java:841)                 
at java.util.HashMap$ValueIterator.next(HashMap.java:871)
at java.util.Collections$UnmodifiableCollection$1.next(Collections.java:1010)

正好在 foreach 行上:

for (MyClass myObj : col) {

我不明白为什么会出现这个错误,因为我没有修改列表。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com