我是Java的初学者,我遇到一个任务问题
我试图向ArrayList添加一个元素但是有一个例外:线程中的异常" main" java.util.ConcurrentModificationException
public Anagrams (String path) throws FileNotFoundException {
List<String> tmpList = new ArrayList<>();
Scanner scan = new Scanner(new File(path));
while(scan.hasNext()) {
tmpList.add(scan.next());
}
scan.close();
tmpList.forEach(word -> {
if(anList.isEmpty()) {
ArrayList<String> tmp1 = new ArrayList<String>();
tmp1.add(word);
anList.add(tmp1);
}
else {
anList.forEach(list -> {
if (isAnagram(word, list.get(0))) {
list.add(word);
} else {
ArrayList<String> tmp2 = new ArrayList<String>();
tmp2.add(word);
anList.add(tmp2);
}
});
}
});
}
我从txt文件中收集单词并将它们分成不同的数组(如果它们是字谜或不是字谜)。我知道在我迭代它的时候我无法修改一个集合 - 但我无法弄清楚如何避免这种异常..请你能帮助我吗?
答案 0 :(得分:0)
anList.forEach(list -> {
if (isAnagram(word, list.get(0))) {
list.add(word);
} else {
ArrayList<String> tmp2 = new ArrayList<String>();
tmp2.add(word);
anList.add(tmp2); // !!
}
});
您认为forEach
来电会在评论anList
的行中添加添加到// !!
的元素吗?
Java不知道它是否应该。所以它会抛出。
弄清楚如何做一些不同的事情:例如,添加到不同的列表中。