コレクションを巡回するときに要素を削除しjavaを放出する.util.ConcurrentModificationExceptionの解決策

2721 ワード

コレクションを巡回して要素を削除するとjavaが放出される可能性があります.util.ConcurrentModificationException異常.
次のコードは例外を放出します.
1:  for (String s : map.keySet()) {
2:      if ("val".equals(s))
3:          map.remove(s);
4:  }

 
どうやってこの問題を解決しますか?反復器を使用:
1:  Iterator it = map.keySet().iterator();
2:  while (it.hasNext()) {
3:      String obj = it.next();
4:      if ("2".equals(obj)) {
5:          it.remove();
6:      }
7:  }

反復器を呼び出すremoveメソッドは、要素を安全に削除できます:it.remove();
集合のremoveメソッドを使用する場合:map.remove(s); javaに報告します.util.ConcurrentModificationException異常:
1:  Iterator it = map.keySet().iterator();
2:  while (it.hasNext()) {
3:      String obj = it.next();
4:      if ("2".equals(obj)) {
5:          // it.remove();
6:          map.remove(obj);
7:      }
8:  }