11.5.1 Iterator
- 컬렉션 프레임웍에서 컬렉션에 저장된 요소를 읽어오는 방법을 표준화 했음
- 컬렉션에 저장된 각 요소에 접근하는 기능을 가진 Iterator인터페이스를 정의하고, Collection인터페이스에는 Iterator를 반환하는 iterator()를 정의함
public interface Iterator{ boolean hasNext(); Object next(); void remove(); } public interface Collection{ ... public Iterator iterator(); ... }
- 주로 while문을 사용해 컬렉션 클래스를 읽음
Collection c = new ArrayList(); Iterator it = c.iterator(); while(it.hasNext()){ System.out.println(it.next()); }
- Map인터페이스를 구현한 컬렉션 클래스는 키(key)와 값(value)을 쌍으로 저장하고 있기 때문에 iterator()를 직적 호출할 수 없음
- keySet()이나 entrySet()과 같은 메서드를 통해서만 키와 값을 각가 따로 Set의 형태로 얻어 온 후에 다시 iterator()를 호출해야 Iterator을 얻을 수 있음
Map map = new HashMap(); ... Iterator it = map.entrySet().iterator();
11.5.2 ListIterator와 Enumeration
- Enumeration는 컬렉션 프레임웍이 만들어지기 이전에 사용하던 것으로 Iterator의 구버전임
- ListIterator는 Iterator을 상속받아 기능을 추가한 것임
- 💡 단방향인 Iterator와 달리 ListIterator는 양방향으로 이동이 가능함. 단, List 인터페이스를 구현한 컬렉션에만 사용할 수 있음
'자바의 정석 정리' 카테고리의 다른 글
자바의 정석 - 11.7 Comparator와 Comparable (0) | 2022.09.05 |
---|---|
자바의 정석 - 11.6 Arrays (0) | 2022.09.05 |
자바의 정석 - 11.4 LinkedList (0) | 2022.09.05 |
자바의 정석 - 11.3 Stack과 Queue (0) | 2022.09.05 |
자바의 정석 - 11.2 ArrayList (0) | 2022.09.05 |