我有以下代码:

System.out.println(dislist.size());

for (int k = 0; k < 10; k++) {
    System.out.println(k + dislist.get(k).first + dislist.get(k).second);

    if (!dislist.get(k).first.equals(Nodename)) {
        if (dislist.get(k).first.equals(myfirst) ||
            dislist.get(k).first.equals(mysecond) ||
            dislist.get(k).second.equals(myfirst) ||
            dislist.get(k).second.equals(mysecond)) {
                dislist.remove(k);
            }
        }
    }
}

问题是:开始时的印刷品清楚地表明dislist.size()为10。
但是,我得到了一个数组超出范围的异常,告诉我列表的大小不超过6。
是的,在此之前,我将新对象添加到列表中。
我想循环何时开始还没有完成。
只有在列表中确实有10个对象时,有没有办法强制Java(在同一方法内)启动循环?

最佳答案

Iterator<YourClass> iter = dislist.iterator();
while (iter.hasNext()) {
     YourClass obj = iter.next();
     if (/* your expression */) {
          iter.remove();
     }
}

关于java - Java并发修改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14183070/

10-10 10:12