重複の可能性:
Java Enumeration と Iterator の違い
私はこの投稿を読んでいました "イテレータと列挙の違い"
反復子メソッドまたは列挙メソッドのいずれかを使用して同じアクションを実行できる場合、違いは何ですか?
これらのインターフェイスはどこで使用する必要がありますか?
重複の可能性:
Java Enumeration と Iterator の違い
私はこの投稿を読んでいました "イテレータと列挙の違い"
反復子メソッドまたは列挙メソッドのいずれかを使用して同じアクションを実行できる場合、違いは何ですか?
これらのインターフェイスはどこで使用する必要がありますか?
列挙子は、レガシー Java 1.0 の一部です。イテレータは Java 1.2 でのみ登場しました。私の知る限り、列挙子は下位互換性のためにのみ保持されています。Enumeratorの Java ドキュメントに従って、すべての新しいコードは Iterator インターフェイスを使用する必要があります。
注: このインターフェイスの機能は、Iterator インターフェイスによって複製されます。さらに、Iterator はオプションの remove 操作を追加し、メソッド名を短くしています。新しい実装では、列挙型よりも反復子を使用することを検討する必要があります。
コレクション、リスト、セットなど、またはその Iterator インターフェイスを実装するものをループするときは、Iterator を使用する必要があります。「新しい」(Java 5) for ループ構造を使用して、そのようなコレクションを反復処理することもできます。ただし、ループ時にコレクションから項目を削除する唯一の安全な方法は、Iterator.remove() メソッドを使用することです。
Iterator は、新しい推奨される方法です。削除機能を追加します。
列挙は、リスト内の連続する要素を取得するために使用され、挿入や削除などの方法でリストを変更するために使用することはできません。ただし、反復子は、リスト内の参照を維持するインスタンス化されたオブジェクトであり、リスト内の要素を取得するだけでなく、その参照で要素を挿入および削除できます。
リスト内の要素を取得したいだけの場合は、列挙と反復子の使用の両方がうまく機能します。ただし、挿入と削除の追加機能が必要な場合は、反復子を使用することをお勧めします。