文字列のセットをパラメーターとして取り、セットから偶数長の文字列をすべて削除するメソッド removeEvenLength を記述します。
私の解決策:
public static void removeEvenLength(Set<String> set) {
for(String word : set) {
if(word.length() % 2 == 0) {
set.remove(word);
}
}
}
入力:
[foo, buzz, bar, fork, bort, spoon, !, dude]
出力:
ConcurrentModificationException on line 2:
java.util.ConcurrentModificationException
at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1115)
at java.util.TreeMap$KeyIterator.next(TreeMap.java:1169)
at removeEvenLength (Line 2)
を作成することで解決できIterator
ます。しかし、上記のコードが機能しない理由を知りたいですか?
編集:
イテレータも機能しません:
public static void removeEvenLength(Set<String> set) {
Iterator<String> i = set.iterator();
while(i.hasNext()) {
String word = i.next();
if(word.length() % 2 == 0) {
set.remove(word);
}
}
}
同じエラー。