English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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() | 그에는 다음과 같은 메서드가 있습니다- * 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()); } } }