JAVAコレクションの要素を削除する方法


コレクションの一部の要素を削除することがよくあります.そう書くかもしれません.
public void operate(List list){

  for (Iterator it = list.iterator(); it.hasNext();) {

  String str = (String)it.next();

  if (str.equals("chengang")){

  list.remove(str);

  }

  }

  }

この書き方は、実行すると次のような異常を報告します.
  Exception in thread "main"java.util.ConcurrentModificationException
  at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
リストはループ中は要素を削除できないからです.それから私はこのようにして、1種のとても愚かな方法で、構想はこのようにします:1つのリストを作成してわざわざ削除する要素を保存して、循環した後に、リストを使います.removeAllメソッドは要素を削除します.コードは次のとおりです.
public void operate(List list){

  List removeList= new ArrayList();

  for (Iterator it = list.iterator(); it.hasNext();) {

  String str = (String)it.next();

  if (str.equals("chengang")){

  removeList.add(str);

  }

  }

  list.removeAll(removeList);

  }

これも確かに問題を解決することができますが、方法は本当に重くて、実はもっと簡単で効率的な方法があります.Iteratorを使うことです.removeメソッドは、次のとおりです.
for (Iterator it = list.iterator(); it.hasNext();) {

  String str = (String)it.next();

  if (str.equals("chengang")){

  it.remove();

  }

  }

だから、Javaの基礎知識を知れば知るほど、コードは簡潔になります.逆に、コードが特に複雑であれば、方法や設計に問題があります.