반응형
Iterator<E> 인터페이스
- 자바의 컬렉션 프레임워크는 컬렉션에 저장된 요소를 읽어오는 방법을 Iterator 인터페이스로 표준화하고 있다.
- Collection 인터페이스에서는 Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 iterator() 메소드를 정의하여 각 요소에 접근하도록 하고 있다. 따라서 Collection 인터페이스를 상속받는 List와 Set 인터페이스에서도 iterator() 메소드를 사용할 수 있다.
// 연결 리스트를 반복자(iterator)를 사용하여 순회
LinkedList<Integer> lnkList = new LinkedList<Integer>();
lnkList.add(4);
lnkList.add(2);
lnkList.add(3);
lnkList.add(1);
Iterator<Integer> iter = lnkList.iterator();
while (iter.hasNext()) {
System.out.print(iter.next() + " ");
}
>> 4 2 3 1
Iterator<E> 메소드
- Iterator 인터페이스는 다음과 같은 메소드를 사용하여 컬렉션의 각 요소에 접근할 수 있다. 하지만 현재 자바에서는 될 수 있으면 JDK 1.5부터 추가된 Enhanced for 문을 사용하도록 권장하고 있다.
- Enhanced for 문을 사용하면 같은 성능을 유지하면서도 코드의 명확성을 확보하고 발생할 수 있는 버그를 예방해 준다. 하지만 요소의 선택적 제거나 대체 등을 수행하기 위한 경우에는 반복자(iterator)를 사용해야만 한다.

Enumeration<E> 인터페이스
- Enumeration 인터페이스는 JDK 1.0부터 사용해 온 Iterator 인터페이스와 같은 동작을 하는 인터페이스다. Enumeration 인터페이스는 hasMoreElements()와 nextElement() 메소드를 사용하여 Iterator와 같은 작업을 수행한다.
- 하지만 현재에는 기존 코드와의 호환성을 위해서만 남아있으므로, Enumeration 인터페이스보다는 Iterator 인터페이스를 사용하는 것이 좋다.
ListIterator<E> 인터페이스
- ListIterator 인터페이스는 Iterator 인터페이스를 상속받아 여러 기능을 추가한 인터페이스다.
- Iterator 인터페이스는 컬렉션의 요소에 접근할 때 한 방향으로만 이동할 수 있지만, JDK 1.2부터 제공된 ListIterator 인터페이스는 컬렉션 요소의 대체, 추가 그리고 인덱스 검색 등을 위한 작업에서 양방향으로 이동하는 것을 지원한다.
- 단, ListIterator 인터페이스는 List 인터페이스를 구현한 List 컬렉션 클래스에서만 listIterator() 메소드를 통해 사용할 수 있습니다.
// 리스트 반복자를 사용하여 리스트의 모든 요소를 각각 순방향과 역방향으로 출력
LinkedList<Integer> lnkList = new LinkedList<Integer>();
lnkList.add(4);
lnkList.add(2);
lnkList.add(3);
lnkList.add(1);
ListIterator<Integer> iter = lnkList.listIterator();
while (iter.hasNext()) {
System.out.print(iter.next() + " ");
}
while (iter.hasPrevious()) {
System.out.print(iter.previous() + " ");
}
>> 4 2 3 1
>> 1 3 2 4
ListIterator<E> 메소드

Reference
반응형
'Language > Java' 카테고리의 다른 글
[Java] 자바 예외 처리 - 오류와 예외 (0) | 2024.04.21 |
---|---|
[Java] 자바 컬렉션 프레임워크 - Comparable과 Comparator (0) | 2024.04.21 |
[Java] 자바 컬렉션 프레임워크 - Map 컬렉션 클래스 (0) | 2024.04.14 |
[Java] 자바 컬렉션 프레임워크 - Set 컬렉션 클래스 (0) | 2024.04.14 |
[Java] 자바 컬렉션 프레임워크 - Queue 컬렉션 클래스 (0) | 2024.04.14 |