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

Unterschied zwischen Iterator und Enumeration in Java

Iterator und Enumeration sind Cursor, um Elemente der Sammlung zu durchlaufen und darauf zuzugreifen. Sie gehören alle zum Sammlungsrahmen. Im JDK1.0 und JDK.1.2Version des Iterators hinzugefügt wurde. 

Enum kann die Struktur der Sammlung nicht ändern, da es nur lesenden Zugriff auf die Elemente der Sammlung hat. Es verfügt über folgende Methoden:

  • * hasMoreElements()

  • * nextElement()

Andererseits kann der Iterator Elemente aus der Sammlung lesen und löschen. Er verfügt über folgende Methoden-

  • * hasNext()

  • *nex()

  • *remove()

NummerSchlüsselIteratorEnum
1ein
Basis

Im Iterator können wir Elemente lesen und löschen, wenn wir die Elemente der Sammlung durchlaufen.

Durch die Verwendung von Enum können wir nur Elemente lesen, wenn wir die Elemente der Sammlung durchlaufen.
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());
      }
   }
}