컬렉션에 저장된 데이터에 접근(읽어오기)하는 데 사용되는 인터페이스!
Enumeration(구버전)과 Iterator(신버전)는 비슷하다.
ListIterator는 Iterator의 접근성을 향상시킨 것. (단방향 -> 양방향)
컬렉션에 저장 된 요소들을 읽어오는 방법을 표준화 한 것 (컬렉션이 변경되어도, 동일하게 사용 가능)
boolean hasNext()로 확인 후, Object next()로 읽기.
컬렉션에 iterator() 호출 -> Iterator를 구현한 객체를 얻어서 사용.
iterator() 메서드는 Collection 인터페이스가 가지고 있는 추상메서드이기 때문에, 컬렉션 인터페이스를 구현한 클래스는 모두 보유하고있다.
List list = new ArrayList(); // 다른 컬렉션으로 변경 시, 이 부분만 고치면 됨
Iterator it = list.iterator(); // Iterator 객체를 반환
while(it.hasNext()) { // 읽어 올 요소가 있는지 확인
System.out.println(it.next()); // 다음 요소를 읽어옴
}
Map에는 iterator()가 없다. Collection 인터페이스를 구현한 클래스가 아니기 때문.
keySet(), entrySet(), values()를 호출해야 함. 각각의 반환 타입이 Set, Set, Collection이기 때문에, 변경 후 iterator를 사용
Map map = new HashMap();
...
Iterator it = map.entrySet().iterator();