공통점
자바 컬렉션에 대해서 각 항목을 순차적으로 접근하기 위해서 디자인되었다.
자바는 Iterator를 standard한 것으로 보고 있고 권장하고 있다.
Enumeration은 초기에 나와서 벡터나 해쉬테이블 등 초기 타입의 collection만 지원한다.
Iterator는 JDK 1.2 부터 소개되어서 모든 collection 객체를 지원한다.
snap shot이란 원본과 별개로 사본을 남겨서 처리한다.
따라서 enumeration으로 순차적 처리를 하는 도중에 다른 사람이 collection에 insert나 delete를 한다면
원래 자료와 enumeration의 데이터 사이에 예외사항을 인지 못하고 불일치가 생길 수 있다.
Iterator는 별도 snap shot을 만들지 않고 Collection 원본 데이터에 직접 access 한다.
그래서 Iterator 이용하여 순차 접근하는 도중에 다른 곳에서 해당 collection 데이터를 추가 삭제하면 concurrent modification exception 이라는 에러가 발생한다. 이런식으로 순차적 접근이 실패하면 예외를 발생하는 방법을 Fail fast라고 한다.
Enumeration이나 Iterator 모두 이름은 다르지만 같은 기능을 갖고 있는 method가 있다.
Enumeration | Iterator |
초기 Collection 만 지원 | 모든 Collection 지원 |
Snap Shot | Fail fast, Concurrent Modification Exception |
hasMoreElements(), nextElement() | hasNext(), next(), remove() |
정리
Enumeration
a few collection suport
snap shot
Iterator
all collection support
fail fast
remove() method
참고자료
[Java] Enumeration 과 Iterator (tistory.com)
'컴퓨터공학 > Java' 카테고리의 다른 글
CS> 자바에서 marker interface는 무엇인가? (0) | 2021.07.04 |
---|---|
CS> SimpleDataFormat 은 무엇인가? (0) | 2021.07.04 |
CS> Array List 와 Linked List의 차이점?? (0) | 2021.07.04 |
CS> try catch에서 System.exit 부르면 어떻게 될까? finally 이 실행될까? (0) | 2021.07.04 |
CS> byte stream 과 character stream 의 차이점 (0) | 2021.07.04 |