我使用了迭代器类来解决问题。 我认为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);
}
}
答案 0 :(得分:0)
将添加项存储在本地集/列表中。
整体迭代后,只需将它们全部添加
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);
}