我試着運行for循環,但它不會運行,因爲allWords是空的。因此我添加了第一個if語句,所以allWorlds至少有一個項目,因此循環將運行。循環現在運行,但我得到:如何解決我的代碼錯誤'併發修改異常'
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
一些谷歌搜索告訴我,這是因爲我試圖改變ArrayList的,而其使用的(?)。我想知道是否有一個簡單的解決方案,或者如果我不得不重寫代碼。提前致謝。
代碼:
private void addWord(String word){
if(allWords.isEmpty()){ //allWords defined above.
allWords.add(word);
}
for (String check : allWords){
if (!check.equalsIgnoreCase(word)){
allWords.add(word);
}
else if(check.equalsIgnoreCase(word)){
System.out.println("This word is a duplicate.");
}
else{
System.out.println("Something went wrong.");
}
}
}
正如評論建議您[較早前的問題(http://stackoverflow.com/questions/ 33109742/check-through-arraylist-if-it-contains-a-string-if-it-doesnt-add-that-stri),如果你不想要的話,可以用'Set'代替'List'允許'allWords'中的重複項。 ['Set.add()'](https://docs.oracle.com/javase/7/docs/api/java/util/Set.html#add%28E%29)的返回值表明該集合已經包含了價值與否。 –
聲明'SortedSet allWords = new TreeSet (String.CASE_INSENSITIVE_ORDER);'將您的方法減少到'if(!allWords.add(word)){System.out.println(「This word is a duplicate。」); }' –