📚참고
컬렉션 프레임워크와 핵심 인터페이스

 

 

 

 

 

 

 

 

 

Iterator, ListIterator, Enumeration

 

  • 컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스
  • Enumeration은 Iterator의 구버전
  • ListIterator는 Iterator의 접근성 향상 시킨 버전
    • Iterator는 단방향
    • ListIterator는 양방향 (privious() 존재)

 

 

 

 

 

 

 

 

 

Iterator 메서드

 

// 읽어 올 요소 확인
boolean hasNext();

// 다음 요소 읽어옴
Object next();

 

 

 

 

 

 

 

 

 

Iterator 존재 이유

 

  • List, Map, Set 컬렉션의 데이터를 확인하고 읽는 방법을 표준화
  • 성능 등의 문제로 컬렉션을 교체할 때, 데이터를 확인하고 읽는 코드를 수정하지 않아도 됨
  • 만약 for문 사용했다면 타 컬렉션으로 교체 시, 기존 코드의 for문 사용할 수 없다.
    • 예를 들어, List의 get()가 HashSet엔 없음

 

 

 

 

 

 

 

 

 

Iterator 사용법

 

  • Collection에 iterator()를 호출해서 Iterator를 구현한 객체를 얻는다.
    • [참고] Collection을 구현한 자손은 List, Set
  • iterator는 1회용이라 다 쓰고나면 다시 얻어와야 사용 가능

 

public interface Collection {
    ...
    public Iterator interator();
    ...
}
// 다른 컬렉션으로 변경 시, 2 line만 고치면 됨
List list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");

Iterator it = list.iterator();

while(it.hasNext()) {
	System.out.println(it.next());
}

// iterator 다시 얻어와야함
// 만약 다시 얻어오지 않고 17 line 실행하면 hasNext()는 false 반환 
Iterator it = list.iterator();

while(it.hasNext()) {
	System.out.println(it.next());
}

 

 

 

 

 

 

 

 

 

Map과 Iterator

 

  • Map에는 iterator() 없다.
  • keySet(), entrySet(), values() 호출하여 사용할 수 있다.

 

Map map = new HashMap();
Iterator it = map.entrySet().iterator();

 

 

 

 

 

 

 

 

 

 

'JAVA > 컬렉션 프레임워크' 카테고리의 다른 글

Set  (0) 2021.06.15
Comparator & Comparable  (0) 2021.06.01
Arrays  (0) 2021.05.31
LinkedList  (0) 2021.05.04
컬렉션 프레임워크 (Collection Framework)  (0) 2021.05.02