gpt4 book ai didi

java - 使用 Iterator.next() 避免 ConcurrentModificationException

转载 作者:太空狗 更新时间:2023-10-29 16:11:04 26 4
gpt4 key购买 nike

在我的 Android 应用程序中,我在 map 上绘制一些航路点时使用此代码

Iterator<Waypoint> iterator = waypoints.iterator();
while (iterator.hasNext()) {
Waypoint w = iterator.next();
}

但是我收到了这个错误

Fatal Exception: java.util.ConcurrentModificationException java.util.ArrayList$ArrayListIterator.next (ArrayList.java:573)

不会直接在我迭代的循环中修改列表。

但是我有可能在另一个线程中修改列表,因为用户可以移动一些航点。并且可以在用户使用触摸屏移动航点的同时绘制航点。

我能以某种方式避免该异常吗?

最佳答案

如果您想维护一个在多个线程中使用的List,最好使用并发列表,例如CopyOnWriteArrayList

在本地,您可以通过首先创建航路点列表的副本并迭代它来避免异常:

Iterator<Waypoint> iterator = new ArrayList<>(waypoints).iterator();
while (iterator.hasNext()) {
handle(iterator.next());
}

关于java - 使用 Iterator.next() 避免 ConcurrentModificationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49208838/

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