English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Javaにおけるイテレータとエnumの違い

IteratorとEnumerationは、集合内の要素をループ処理しアクセスするためのカーソルです。それらはすべてコレクションフレームワークに属しています。コレクションフレームワークのJDK1.0およびJDK.1.2バージョンのIteratorに列挙が追加されました。 

列挙は集合に対して構造の変更を行うことができません。なぜなら、集合内の要素に対して読み取り専用のアクセス権を持っているからです。以下のメソッドを持っています:

  • * hasMoreElements()

  • * nextElement()

一方で、イテレータは集合内の要素を読み取ったり削除したりできます。以下のメソッドを持っています。-

  • * hasNext()

  • *next()

  • *remove()

インデックスキーイテレータ列挙
1個
基本的

Iteratorでは、集合内の要素をループ処理中に要素を読み取ったり削除したりできます。

列挙を使用すると、集合内の要素をループ処理中に要素を読み取ることができます。
2。 
アクセス 

それは、収集フレームワークのどんなクラスとも使用できます。

それは、VectorやHashTableなどの旧い収集フレームワークのクラスと一緒に使用できます。
3。 
失敗-失敗と失敗-安全 

例えば、スレッドが集合を迭代している間に集合から要素を削除するなどの集合内の変更は、コンカレント修改異常を引き起こします。

枚举は基本的にフェイルセーフです。コンカレント修改異常を引き起こしません 
4。 
制限 
み前方のみの迭代ができます枚举を使用して削除操作を実行することはできません。
5、
メソッド 

以下のメソッドがあります−

*hasNext()
*next()
*remove()
 以下のメソッドがあります-
* 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);
         }
      }
      // 名前を表示
      System.out.println("The names are:");
      e = v.elements();
      while (e.hasMoreElements()) {
         // 要素を印刷
         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();
         }
      }
      //表示名前
      System.out.println("The names are:");
      i = v.iterator();
      while (i.hasNext()) {
         System.out.println(i.next());
      }
   }
}