Java 并发迭代器 arraylist 恶作剧

标签 java concurrency

我有一些代码使用迭代器遍历数组列表。如果满足某个条件,我想将一个对象添加到arraylist。这可以用迭代器完成吗?还是我只需要使用 l循环?


itr=particleArr.iterator();
while (itr.hasNext()){
    particle=itr.next();
    if (isMyLifeUtterlyMeaningless)) {
         particleArr.add(new Particle(particle.getXCoor() - 5,
             particle.getYCoor() + 5,
             colorState));
}}
抛出修改异常。那么我该如何用迭代器重写它呢?

最佳答案

怎么样:

    newParticles = new ArrayList<Particle>();
    for (Particle particle : particleArr) {
        if (isMyLifeUtterlyMeaningless)) {
            newParticles.add(new Particle(particle.getXCoor() - 5,
                                          particle.getYCoor() + 5,
                                          colorState));
        }
    }
    particleArr.addAll(newParticles);

关于Java 并发迭代器 arraylist 恶作剧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4130601/

相关文章:

Java - 使用哈希表(例如 HashMap)将对象映射到自身是否是常见的做法?

java - 图标和 NavigationView 之间的左边距

c# - 与 C# 和 C++ 相比,Python 中的并发支持

Java 并发读/写

java - 多线程状态相关问题

java - 设置 TextView 数组的上下文

java - 我如何从 Presenter (MVP) 初始化 Room 数据库

java - 使用相同的键订购 map

java - 我可以从并发线程调用 XMPPConnection.sendPacket 吗?

java - 非常简单的Swing骰子程序中的神秘(并发/组件绘制?)错误