Enumeration 인터페이스와 Iterator 인터페이스

Enumeration 인터페이스Iterator 인터페이스 모두 하는 역할은 비슷하다. 배열의 원소(Element)들을 한 순간에 하나씩 처리할 수 있는 메서드를 제공하는 컬렉션들이다. 일반적으로 배열문과 함께 사용되며, 다음에 처리할 수 있는 원소가 있는지 없는지 등의 여부(boolean)와 다음 원소를 반환할 수 있다.

Enumeration 인터페이스와 Iterator 인터페이스의 메서드를 알아보며 어떤 차이가 있는지 알아보자.

Enumeration 인터페이스

Enumeration 인터페이스는 Java 8에서 Iterator 인터페이스가 추가되기 전까지 사용하던 컬렉션이다.

Enumeration의 주요 메서드

  • hasMoreElements() : boolean
    • element가 더 남아있는지 boolean 값을 반환한다.
  • nextElement() : E
    • 다음 element를 열거형(E)으로 반환한다.

Iterator 인터페이스

Enumeration 인터페이스와 비슷하지만, 원소를 삭제할 수 있는 메서드가 존재한다는 점에서 Enumeration가 다르다.

Iterator의 주요 메서드

  • hasNext() : boolean
    • 다음에 처리할 element가 남아있는 boolean 값을 반환한다.
  • next() : E
    • 다음 element를 열거형(E)로 반환한다.
  • remove() : void
    • element를 삭제한다.

Iterator 인터페이스는 Java 1.2부터 추가되었는데, 오라클 공식문서에서는 아래와 같은 이유로 Enumeration 인터페이스 대신 Iterator 인터페이스를 쓰라고 권하고 있다.

NOTE : The functionality of this interface is duplicated byu the Iterator interface. In addition, Iterator adds an optional remove operation, and has shorter method names. New implementatinos should consider using iterator in preference to Enumeration.

삭제할 수 있는 메서드가 생겼고, 메서드의 이름이 더 짧아졌기 때문에 새로 구현하는 객체에서는 Enumeration 대신에 Iterator를 사용하라는 문구이다.


참고문서