Post

Java Enumeration과 Iterator의 차이점

1. Enumeration

Enumeration는 버전 1.0부터 Java에 있었다. 인터페이스이며 모든 구현을 통해 요소에 하나씩 액세스할 수 있다. 간단히 말해서 VectorHashtable과 같은 개체 컬렉션을 반복하는데 사용된다.

Enumeration의 예이다.

1
2
3
4
5
Vector<Person> people = new Vector<>(getPersons());
Enumeration<Person> enumeration = people.elements();
while (enumeration.hasMoreElements()) {
    System.out.println("First Name = " + enumeration.nextElement().getFirstName());
}

여기서는 Enumeration을 사용하여 Person의 firstName을 인쇄하고 있다. elements() 메소드는 Enumeration에 대한 참조를 제공하며 이를 사용 하여 요소에 하나씩 액세스할 수 있다.

2. Iterator

Iterator는 Java 1.2부터 존재했으며 동일한 버전에서도 도입된 컬렉션을 반복하는데 사용된다.

다음으로 Iterator를 사용하여 Person의 firstName을 인쇄한다. iterator()는 Iterator에 대한 참조를 제공하고 이를 사용하여 요소에 하나씩 액세스할 수 있다.

1
2
3
4
5
List<Person> persons = getPersons();
Iterator<Person> iterator = persons.iterator();
while (iterator.hasNext()) {
    System.out.println("First Name = " + iterator.next().getFirstName());
}

따라서 Enumeration 및 Iterator는 각각 1.0 및 1.2부터 Java에 있으며 한 번에 하나씩 개체 컬렉션을 반복하는데 사용된다.

3. Enumeration와 Iterator의 차이점

EnumerationIterator
Vector 및 Hashtable을 열거하기 위해 Java 1.0부터 존재한다.List, Set, Map 등과 같은 컬렉션을 반복하기 위해 Java 1.2부터 존재한다.
hasMoreElements()nextElement()의 두 가지 메서드가 포함되어 있다.hasNext(), next()remove()의 세 가지 메서드가 포함되어 있다.
메소드의 이름이 길다.메소드에는 짧고 간결한 이름이 있다.
반복하는 동안 요소를 제거하는 방법이 없다.반복하는 동안 요소를 제거하려면 remove()가 있어야 한다.
Java 9에 추가된 asIterator()는 Enumeration 상단에 Iterator를 제공한다. 그러나 이 특별한 경우에는 remove()가 UnsupportedOperationException을 발생시킨다.Java 8에 추가된 forEachRemaining()은 나머지 요소에 대한 작업을 수행한다.

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.