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

Различие между Iterator и Enum в Java

Iterator和Enumeration都是游标,用于遍历和访问集合中的元素。它们都属于收集框架。在收集框架的JDK1.0和JDK1.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());
      }
   }
}