java—在循环中使用迭代器而不引起任何异常

2o7dmzc5  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(342)

我用迭代器类来解决一个问题。我认为hashset的iterator()方法返回其迭代器的集合。但是每当我运行这段代码(尤其是第5行)时,就会出现concurrentmodificationexception,即使我已经检查了迭代器是否有下一个元素。
对不起,我的英语不好,但我真的想找出我的代码有什么问题,并解决问题。

for (int i = 0; i < N; i++) {
    int input = scan.nextInt();
    iterator = set.iterator();
    while (iterator.hasNext()) {
        int num = iterator.next();
        if (!set.contains(num + input)) set.add(num + input);
    }
}
vnjpjtjt

vnjpjtjt1#

将添加项存储在本地集合/列表中。
在整体迭代之后,只需将它们全部添加

Set toAdd = new HashSet();
for (int i = 0; i < N; i++) {
    int input = scan.nextInt();
    iterator = set.iterator();
    toAdd.clear();
    while (iterator.hasNext()) {
        int num = iterator.next();
        if (!set.contains(num + input)) toAdd.add(num + input);
    }
    set.addAll(toAdd);
}

相关问题