一つの方法:
/ ** *リスト内の要素を削除するために直接使用するforeachメソッドが例外をスローします *スレッドの例外「メイン」java.util.ConcurrentModificationExceptionがの 問題*このアプローチであることを、あなたは要素を削除した後、リストのサイズが変更、あなたのインデックスが変更されると、 *そのときトラバーサルあなたには、いくつかの要素を欠場する原因となります。 *最初の2つの要素への継続的なアクセスに基づくインデックスは、後者の要素が削除されている間の関係は前進1を移動しているので、あなたが、最初の要素を削除する例については、 *ので、実際の訪問は、第三の要素です。 *したがって、このアプローチは、使用される特定の要素を削除するために使用されるが、ループ要素複数の削除、使用時には適さないことができます。 * / パブリック 静的 ボイドメイン(文字列[]引数){ リスト一覧= <文字列> 新しい新規のArrayList <> (); List.add( "AA" ); List.add( "BB" ); List.add(「CC " ); のための(文字列str: もし( "AA" .equals(STR)){ list.remove(STR)。 } } のSystem.out.println(はlist.size())。 }
第二の方法:
パブリック 静的 ボイドメイン(文字列[]引数){ リストの<string>リスト= 新規のArrayList <> (); list.add( "AA" ); list.add( "BB" ); list.add( "CC" )。 反復子は、 <文字列>は= list.iteratorを(); 一方、(it.hasNext()){ 文字列str = (文字列)it.next(); もし( "AA" .equals(STR)){ it.remove()。 } } のSystem.out.println(はlist.size())。 }
三つの方法:
パブリック 静的 ボイドメイン(文字列[]引数){ リストの<string>リスト= 新規のArrayList <> (); list.add( "AA" ); list.add( "BB" ); list.add( "CC" )。 用(INT I =はlist.size() - 1; I> = 0; i-- ){ 文字列str = list.get(I)。 もし( "CC" .equals(STR)){ list.remove(STR)。 } } のSystem.out.println(はlist.size())。 }
4つの方法:
パブリック 静的 ボイドメイン(文字列[]引数){ リストの<string>リスト= 新規のArrayList <> (); list.add( "AA" ); list.add( "BB" ); list.add( "CC" )。 用(INT I =はlist.size() - 1; I> = 0; i-- ){ 文字列str = list.get(I)。 もし( "CC" .equals(STR)){ list.remove(STR)。 } } のSystem.out.println(はlist.size())。 }