Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java Iterator와 Enumeration 인터페이스의 차이점 완벽 정리

자바(Java)에서 컬렉션의 요소를 순회할 때 사용되는 대표적인 방식으로 IteratorEnumeration이 있습니다. 두 인터페이스는 비슷한 역할을 하지만, 기능과 사용 범위에서 중요한 차이점이 있습니다. 이번 글에서는 두 인터페이스의 차이를 자세히 살펴보겠습니다.

Iterator란?

Iterator는 자바 컬렉션 프레임워크에서 제공하는 표준 순회 인터페이스로, 다음과 같은 특징을 가집니다.

  • 범용 커서(Universal Cursor): 모든 컬렉션 클래스에 적용할 수 있습니다.

  • remove() 메서드 지원: 순회 중에 요소를 안전하게 삭제할 수 있습니다.

  • 레거시가 아닌 최신 인터페이스: JDK 1.2부터 도입된 컬렉션 프레임워크의 일부입니다.

  • 폭넓은 적용 대상: HashMap, LinkedList, ArrayList, HashSet, TreeMap, TreeSet 등 다양한 컬렉션에서 사용할 수 있습니다.

  • 읽기와 수정 모두 가능: 요소를 순회하면서 컬렉션에 대한 변경 작업을 수행할 수 있습니다.

Enumeration이란?

Enumeration은 자바 초기 버전(JDK 1.0)부터 존재해 온 레거시 인터페이스로, 다음과 같은 특징이 있습니다.

  • 범용 커서가 아님: 특정 레거시 클래스에만 적용됩니다.

  • remove() 메서드 미지원: 요소를 삭제하는 기능이 없습니다.

  • 레거시 인터페이스: 주로 Vector, Hashtable 같은 구버전 클래스에서 사용됩니다.

  • 읽기 전용(Read-Only) 인터페이스: 순회 중 컬렉션의 요소를 수정할 수 없습니다.

  • 제한된 적용 대상: Vector와 Hashtable을 순회하는 데 사용됩니다.

핵심 차이점 요약

구분IteratorEnumeration
적용 범위모든 컬렉션 클래스Vector, Hashtable 등 레거시 클래스
요소 삭제remove() 메서드 지원미지원
순회 중 수정가능불가능
인터페이스 유형최신(컬렉션 프레임워크)레거시

결론

새로운 프로젝트에서는 Iterator를 사용하는 것이 권장됩니다. Iterator는 더 많은 컬렉션을 지원하고, 순회 중 요소를 안전하게 제거할 수 있는 remove() 메서드를 제공하기 때문입니다. 반면 Enumeration은 하위 호환성을 위해 유지되고 있으며, 주로 레거시 코드에서만 사용됩니다.