” イテレータ 」メソッドは、コレクションを反復処理しながら、コレクションから特定のデータ要素を安全かつ簡単に削除または削除する方法を提供します。 「」の発生を防ぎます。 ConcurrentModificationException これは、拡張された for ループがコレクションを変更しようとしたときに発生します。現在の位置のトラックを保存し、プログラマが必要に応じて先に進み、基礎となる要素を削除する機会を提供します。
このブログでは、イテレーター メソッドを利用してコレクションから要素を削除するプロセスを示します。
Java で Iterator メソッドを使用してコレクションから要素を削除する方法
イテレータ メソッドは一方向であり、次のようなさまざまなコレクション タイプで使用できます。 「ArrayList」、「LinkedList」 これは、「」を実装するコレクションから要素を削除する統一された方法を提供します。 反復可能 ' インターフェース。
iterator メソッドをより深く理解するために、いくつかの例を見てみましょう。
例 1: Iterator メソッドを使用してコレクションから特定の要素を削除する
イテレータメソッドは「」で利用できます。 もしも ” ステートメントまたはループを使用して、指定された要素を選択します。そして、「 削除 ()」メソッドを使用して、以下に示すように削除操作を実行します。
輸入 java.util.* ;
クラス IterExam
{
公共 静的 空所 主要 ( 弦 [ 】 引数 )
{
配列リスト < 整数 > デモArrリスト = 新しい 配列リスト < 整数 > ( ) ;
ために ( 整数 私 = 0 ; 私 <= 二十 ; 私 = 私 + 2 )
{
デモArrリスト。 追加 ( 私 ) ;
}
イテレータ < 整数 > ITR = デモArrリスト。 イテレータ ( ) ;
システム 。 外 。 プリントイン ( 「提供された ArrayList:」 ) ;
ために ( 整数 私 = 0 ; 私 < デモArrリスト。 サイズ ( ) ; 私 ++ )
{
システム 。 外 。 印刷する ( デモArrリスト。 得る ( 私 ) + 「」 ) ;
}
その間 ( それ。 次がある ( ) )
{
もしも ( それ。 次 ( ) % 3 == 0 )
それ。 削除 ( ) ;
}
システム 。 外 。 プリントイン ( 」 \n 奇数の ArrayList 要素を削除した後」 ) ;
ために ( 整数 私 = 0 ; 私 < デモArrリスト。 サイズ ( ) ; 私 ++ )
{
システム 。 外 。 印刷する ( デモArrリスト。 得る ( 私 ) + 「」 ) ;
}
}
}
上記のコードの説明:
- まず ArrayList が作成され、次に「」の倍数が作成されます。 2 ”の範囲まで”が挿入されます。 二十 」の助けを借りて ために 』のループ。
- 次に「」を宣言します。 イテレータ ”メソッドオブジェクトを使用して、ArrayListの要素をコンソールに表示します。
- 次に、「」を活用します。 次がある ()」メソッドをイテレータ オブジェクトで使用して、存在するすべての ArrayList 要素をスキャンします。
- その後、「 もしも ” ステートメントは、” で完全に割り切れる要素をチェックするために利用されます。 3 ' その中。
- そうして ' 削除 ()」メソッドは、「」によって返された要素を削除するために使用されます。 もしも ' 声明。
- 最終的に、更新された ArrayList は「 ために 』のループ。
コンパイル後:
出力には、3 で割り切れ、イテレータ メソッドを使用して ArrayList から削除された特定の要素が表示されます。
例 2: コレクションからすべての要素を削除する
コレクションの常駐要素をすべて削除するには、iterator メソッドをその「」とともに使用できます。 削除 ()」メソッドを以下に示します。
輸入 java.util.* ;クラス 空虚
{
公共 静的 空所 主要 ( 弦 引数 [ 】 )
{
ベクター < 整数 > テストベクトル = 新しい ベクター < 整数 > ( ) ;
テストベクトル。 追加 ( 18 ) ;
テストベクトル。 追加 ( 21 ) ;
テストベクトル。 追加 ( 25 ) ;
テストベクトル。 追加 ( 27 ) ;
テストベクトル。 追加 ( 30 ) ;
イテレーター < 整数 > トラバース = テストベクトル。 イテレータ ( ) ;
システム 。 外 。 印刷する ( 「既存の要素:」 ) ;
その間 ( トラバース。 次がある ( ) )
システム 。 外 。 印刷する ( トラバース。 次 ( ) + 「」 ) ;
システム 。 外 。 印刷する ( 」 \n testVector には「」が含まれています + テストベクトル。 サイズ ( ) + 「要素」 ) ;
トラバース = テストベクトル。 イテレータ ( ) ;
その間 ( トラバース。 次がある ( ) )
{
システム 。 外 。 印刷する ( 」 \n を削除する + トラバース。 次 ( ) ) ;
トラバース。 削除 ( ) ;
}
システム 。 外 。 プリントイン ( 」 \n さて、testVector には ' + テストベクトル。 サイズ ( ) + 「要素」 ) ;
}
}
コードの説明:
- まず、「」を宣言して初期化します。 ベクター ” を使用したダミーの整数型の値 追加 ()' 方法。
- 次に、「」を使用する反復子メソッドを作成します。 次がある ()' と ' 次 ()」メソッド。存在するデータ要素とそれに対応するサイズが表示されます。
- 次に、「」を活用します。 次がある ' ()' プロパティ内のイテレータ オブジェクトに沿って その間 』のループ。
- その後は「」を活用してください。 次 ()」メソッドを使用して次の要素を選択し、 削除 () メソッドを呼び出して、各受信要素を削除します。
- このようにして、ベクターのすべての要素が削除され、ベクターのサイズがコンソールに表示されます。
コードの説明:
上記のコードは、コレクションからすべての要素が削除されたことを確認します。
例 3: ListIterator を使用した要素の削除
ListIterator は、iterator メソッドと同様に機能します。 ListIterator は、前方と後方の両側でトラバースを実行します。 Java で ListIterator を使用してコレクションから特定の要素を削除するには、以下のコードにアクセスします。
輸入 java.util.ArrayList ;輸入 java.util.ListIterator ;
公共 クラス ListIteratorデモ {
// main() メソッドの初期化
公共 静的 空所 主要 ( 弦 [ 】 引数 )
{ //ArrayList の宣言と初期化
配列リスト < 弦 > 大人 = 新しい 配列リスト < 弦 > ( ) ;
大人 追加 ( 'パーカー' ) ;
大人 追加 ( 'ポール' ) ;
大人 追加 ( 「ヘンリーズ」 ) ;
大人 追加 ( '汗' ) ;
大人 追加 ( 'カジュアル' ) ;
大人 追加 ( '贅沢' ) ;
大人 追加 ( 'ドライフィット' ) ;
リスト反復子 < 弦 > リットル = 大人 リスト反復子 ( ) ;
システム 。 外 。 プリントイン ( 「削除前のリスト」 ) ;
ために ( 整数 私 = 0 ; 私 < 大人 サイズ ( ) ; 私 ++ )
システム 。 外 。 印刷する ( 大人 得る ( 私 ) + 「」 ) ;
その間 ( リットル。 次がある ( ) ) {
もしも ( リットル。 次 ( ) 。 等しい ( '汗' ) ) {
リットル。 削除 ( ) ;
}
}
システム 。 外 。 プリントイン ( 」 \n 削除後のリスト」 ) ;
ために ( 整数 私 = 0 ; 私 < 大人 サイズ ( ) ; 私 ++ )
システム 。 外 。 印刷する ( 大人 得る ( 私 ) + 「」 ) ;
}
}
上記のコードの説明:
- まず、ダミーの String 型値を使用して ArrayList を宣言して初期化し、「」を使用してすべての要素をコンソールに表示します。 ために 』のループ。
- 次に、「」を呼び出すオブジェクトを作成します。 次がある 「 ()」内のメソッド その間 』のループ。これは、常駐するすべての要素を横断します。
- そうして ' もしも ” ステートメントは、要素が “ と一致する場合に、特定のテキストを持つ各要素をチェックするために使用されます。 削除 ()」メソッドが呼び出されます。 「」から特定の要素を削除します。 芸術 」という名前の ArrayList 。
- 最後に、変更した ArrayList をコンソールに表示します。
コンパイル後:
スナップショットは、指定されたデータ要素が ListIterator を使用してコレクションから削除されたことを確認します。
結論
コレクションから要素を削除するには、「 削除 イテレータの()」メソッドを利用します。イテレータは ArrayList を走査して、ターゲットのデータを見つけます。それが見つかったら、「 削除 ()」メソッドは、その特定のデータ要素を削除するために使用されます。さまざまなコレクションにわたって標準化された技術を提供し、問題や次のようないくつかの例外の発生を防ぎます。 ConcurrentModificationException ”。それに伴い、「 リスト反復子 」も参考になります。