Chpt 11. 컬렉션 프레임워크 - 주제 2. 저장된 요소를 접근하는 Iterator 인터페이스
Iterator 이외에도 저장된 요소에 접근하는 ListIterator, Enumeration 인터페이스가 있지만 다음과 같은 차이점 정도만 알아두자.

1. Iterator 인터페이스
Iterator는 저장된 요소를 읽는 방법을 표준화한 인터페이스이다. 다음과 같이 Iterator 인터페이스에는 확인과 읽기 두 가지메서드가 있다.
public interface Iterator { boolean hasNext() // (1) 확인 Object next(); // (2) 읽기 void remove(); } |
public interface Collection { ... public Iterator iterator(); ... } |
1) List, Set의 요소 읽기
Collection 인터페이스의 iterator()는 Iterator 인터페이스를 구현한 Iterator 인스턴스를 반환한다. 따라서 Collection을 구현한 List와 Set은 iterator()를 사용할 수 있다. 다음과 같은 방식으로 컬렉션에 저장된 요소를 읽을 수 있다.
컬렉션 인터페이스 참조 변수 = new 컬렉션 클래스(); // (1) 참조 변수에 컬랙션 클래스의 인스턴스 대입 (List, Set)
Iterator iterator = 참조 변수.iterator(); // (2) 참조 변수에 생성한 Iterator 인스턴스 대입
while (iterator.hasNext()) { // (3) 확인
System.out.println(iterator.next()); // (4) 대입
}
Iterator와 같은 인터페이스는 표준을 제공해 객체 지향 프로그래밍의 장점을 부여한다.
[참고] List 클래스는 for문과 get()으로 요소를 읽을 수 있다.
2) Map의 요소 읽기
Map은 Collection 인터페이스를 구현하지 않았기 때문에 Key와 Value의 값을 각각 Set으로 얻어온 다음에 1)과 같은 방법을 사용해야 한다.
Map map = new HashMap();
Iterator iterator = map.(key|entry)Set().iterator();