Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでのイテレータと列挙の違い


IteratorとEnumerationはどちらも、コレクションの要素をトラバースしてアクセスするためのカーソルです。どちらもコレクションフレームワークに属しています。列挙は、コレクションフレームワークのJDK1.2バージョンのJDK1.0およびIteratorで追加されました。

コレクション内の要素への読み取り専用アクセス権があるため、列挙型はコレクション内の構造を変更できません。次の方法があります:

  • * hasMoreElements()
  • * nextElement()

一方、イテレータはコレクション内の要素を読み取って削除できます。以下の方法があります-

  • * hasNext()
  • * next()
  • * remove()
イテレータ 列挙
Sr。いいえ。 キー
1
基本
Iteratorでは、コレクション内の要素をトラバースしながら要素を読み取って削除できます。
列挙を使用すると、コレクション内の要素をトラバースしているときにのみ要素を読み取ることができます。
2。
アクセス
コレクションフレームワークの任意のクラスで使用できます。
VectorやHashTableなど、コレクションフレームワークのレガシークラスでのみ使用できます。
3。
フェイルセーフおよびフェイルセーフ
スレッド中にコレクションから要素を削除するなど、コレクション内の変更はコレクションを繰り返し、同時変更例外をスローします。
列挙は本質的にフェイルセーフです。同時変更例外をスローしません
4。
制限
順方向の反復のみが可能です
列挙を使用して削除操作を実行することはできません。
5。
メソッド
以下の方法があります-
* hasNext()
*次()
*削除する()
以下の方法があります-
* hasMoreElements()
* nextElement()

列挙の例

class EnumerationExample {
   public static void main(String args[]) {
      List list = new ArrayList(Arrays.asList( new String[] {"Apple", "Cat", "Dog", "Rat"}));
      Vector v = new Vector(list);
      delete(v, "Dog");
   }
   private static void delete(Vector v, String name) {
      Enumeration e = v.elements();
      while (e.hasMoreElements()) {
         String s = (String) e.nextElement();
         if (s.equals(name)) {
            v.remove(name);
         }
      }
      // Display the names
      System.out.println("The names are:");
      e = v.elements();
      while (e.hasMoreElements()) {
         // Prints elements
         System.out.println(e.nextElement());
      }
   }
}

イテレータの例

class IteratorExample {
   public static void main(String args[]) {
      List list = new ArrayList(Arrays.asList( new String[] {"Apple", "Cat", "Dog", "Rat"}));
      Vector v = new Vector(list);
      delete(v, "Dog");
   }
   private static void delete(Vector v, String name) {
      Iterator i = v.iterator();
      while (i.hasNext()) {
         String s = (String) i.next();
         if (s.equals(name)) {
            i.remove();
         }
      }
      // Display the names
      System.out.println("The names are:");
      i = v.iterator();
      while (i.hasNext()) {
         System.out.println(i.next());
      }
   }
}

  1. JavaでのArrayListとHashSetの違い

    HashSetとArrayListはどちらも、Javaコレクションフレームワークの最も重要なクラスの一部です。 以下は、ArrayListとHashSetの重要な違いです。 Sr。いいえ。 キー ArrayList ハッシュセット 1 実装 ArrayListはリストインターフェイスの実装です。 一方、 HashSetは、セットインターフェイスの実装です。 2 内部実装 ArrayListは、その実装のために配列を内部的に実装します。 HashSetは、実装にHashmapを内部的に使用します。 3 要素の順序 ArrayListは、挿入順序、つまり

  2. JavaでのIteratorとListIteratorの違い

    Javaは、コレクションに格納されているデータを1つずつトラバースするために、これら2つのインターフェースを提供しました。イテレータとリストイテレータの内部実装により、それらは異なりますが、両方のイテレータの主なアジェンダは同じです。 IteratorとListIteratorの重要な違いは次のとおりです。 Sr。いいえ。 キー イテレータ ListIterator 1 該当する イテレータは、コレクションのタイプに関係なく、任意のコレクションをトラバースするために使用できます。 リストイテレータは、arraylist、linkedlistなどのリストコレクションが実装