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

Java에서 이터레이터와 엔umerator의 차이점

Iterator와 Enumeration은 요소를 순회하고 접근하는 커서로서 모두 수집 프레임워크에 속합니다. 수집 프레임워크의 JDK1.0과 JDK.1.2버전의 Iterator에 enum을 추가했습니다. 

enum은 요소에 대한 읽기 전용 접근 권한을 가지고 있으므로 셋의 구조를 변경할 수 없습니다. 다음과 같은 메서드를 가집니다:

  • * hasMoreElements()

  • * nextElement()

반면에 이터레이터는 요소를 읽고 삭제할 수 있습니다. 다음과 같은 메서드를 가집니다:-

  • * hasNext()

  • *nex()

  • *remove()

순번이터레이터enum
1개
기본

Iterator에서는 요소를 순회하면서 읽고 삭제할 수 있습니다.

에num을 사용하면 요소를 순회하면서 요소를 읽을 수밖에 없습니다.
2。 
접근 

그것은 수집 프레임워크의 어떤 클래스와도 사용할 수 있습니다。

그것은 수집 프레임워크의 오래된 클래스와 함께 사용할 수 있습니다. 예를 들어 Vector와 HashTable.
3。 
실패-실패와 실패-안전성 

예를 들어, 스레드가 컬렉션을 이터레이션하는 동안 컬렉션에서 요소를 제거하는와 같은 컬렉션 내의 어떤 변경도 동기화 수정 예외를 일으킵니다

에numeration은 기본적으로 안전한 측면을 가집니다. 그것은 동기화 수정 예외를 일으키지 않습니다 
4。 
제한사항 
오직 반복적으로만 수행할 수 있습니다에numeration을 사용하여 제거 작업을 수행할 수 없습니다.
5,
메서드 

그에는 다음과 같은 메서드가 있습니다−

*hasNext()
*next()
*remove()
 그에는 다음과 같은 메서드가 있습니다-
* hasMoreElements()
* nextElement()

에numeration 예제

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());
      }
   }
}