相关疑难解决方法(0)

List.iterator()线程安全吗?

在Java中:是否是List.iterator()线程安全的,即返回的迭代器是在任何时候反映列表的当前状态还是仅在列表创建时反映列表的状态?

java collections iterator list thread-safety

20
推荐指数
2
解决办法
2万
查看次数

在ArrayList中添加foreach循环时,ConcurrentModificationException

我正在尝试使用arraylist的foreach循环,但是当我使用它时,它会给我错误,但是当我使用普通for循环时,它完美地工作,可能是什么问题?

代码在这里:

for (Pair p2 : R) {
    if ((p2.getFirstElm() == p.getSecondElm()) && (p2.getFirstElm() != p2.getSecondElm())) 
        R.add(new Pair (p.getFirstElm(), p2.getSecondElm()));
    else if ((p2.getSecondElm() == p.getFirstElm()) && (p2.getFirstElm() != p2.getSecondElm())) 
        R.add(new Pair (p2.getFirstElm(), p.getSecondElm()));

    // else
    // There are no transitive pairs in R.
}
Run Code Online (Sandbox Code Playgroud)

这是不起作用的循环,这是一个有效的循环:

for (int i = 0; i < R.size(); i++) {
    if ((R.get(i).getFirstElm() == p.getSecondElm()) && (R.get(i).getFirstElm() != R.get(i).getSecondElm())) 
        R.add(new Pair (p.getFirstElm(), R.get(i).getSecondElm()));
    else if ((R.get(i).getSecondElm() == p.getFirstElm()) && (R.get(i).getFirstElm() != R.get(i).getSecondElm())) 
        R.add(new Pair (R.get(i).getFirstElm(), p.getSecondElm())); …
Run Code Online (Sandbox Code Playgroud)

java foreach for-loop arraylist

19
推荐指数
1
解决办法
3万
查看次数