Iterator 과 Enumeration 모두 java.util 패키지에 포함된 반복자 인터페이스
두 반복자 인터페이스 모두 개별요소를 처음부터 끝까지 순차적으로 넘어가며 개별요소에 접근할 수 있다.
차이점은 Snap-Shot 과 Fail-Fast 지원여부이다.
Enumeration 은 반복을 시작하기전에 원본 데이터에 대한 Snap-Shot 을 찍고 해당 Snap-Shot 에 대한 반복을 시작한다.
즉, 원본데이타의 복사? 사본? 에 대해 반복을 실행한다.
그래서 Enumeration 반복 중에 원본데이타에 수정이 일어나도 아무이상없이 반복을 실행한다.
하지만 Snap-Shot 을 찍을때 생기는 비용과 원본과 Snap-Shot 데이타의 무결성을 확신 할 수 없다.
그래서 JDL1.4 때 Iterator 라는 것을 지원했다.
Iterator 는 Fail-Fast 기능을 지원한다.
Iterator 은 Snap-Shot 찍지않고, 원본데이타의 콜렉션 객체를 참조하여 반복을 실행하기때문에 원본데이타의 수정이 일어나면 예외를 발생시키고 반복을 중지한다.
반복실행시 데이타의 변경&수정이 발생할 때 데이타 무결성을 지키기 위해서 런타임에러(Runtime-Error)를 발생 시키는 것을 Fail-Fast 라고 한다.
EX) Enumeration
ArrayList<integer> integerList = new ArrayList<integer>();
for (int i = 0; i < 20; i++ ) {
integerList.add(i);
}
Enumeration enum = integerList.elements();
while( enum.hasMoreElements() ) {
system.out.println( enum.nextElement() );
}
EX) Iterator
ArrayList<integer> integerList = new ArrayList<integer>();
for (int i = 0; i < 20; i++ ) {
integerList.add(i);
}
Iterator itr = integerList.iterator();
while( itr.hasNext() ) {
system.out.println( itr.next() );
}
* Iterator 을 사용하는게 좋을거 같다는 생각 '- '
'공부 > JAVA' 카테고리의 다른 글
JAVA_[ Calendar ] (1) | 2014.08.28 |
---|---|
JAVA_[ String 클래스 생성자와 메서드 ] (0) | 2014.08.27 |
JAVA_[ Vector, ArrayList, Object[], HashMap, TreeMap 선택방법 ] (0) | 2014.08.20 |
JAVA_[ 예외처리(Exception Handling ] (0) | 2014.08.20 |
JAVA_[ 반올림/내림 (floor, ceil, round) ] (0) | 2014.06.19 |