11-22~24 Iterator, Enumeration, Map과 Iterator

oyeon·2020년 12월 24일
0

Java 개념

목록 보기
29/70

Iterator, ListIterator, Enumeration

- Iterator만 알면 된다.

  • 컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스
  • Enumeration은 Iterator의 old 버전
  • Iterator 인터페이스의 메서드
  • Enumeration 인터페이스의 메서드
    : Iterator 인터페이스 메서드와 이름만 다를뿐 같은 기능을 함
  • ListIterator는 Iterator의 접근성을 향상시킨 것 (단방향 -> 양방향)
  • 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화 한 것
    (컬렉션 마다(List, Set, Map) 구조가 다 다른데, 읽어 오는 방법을 표준화 시켜 놓아서 구조 신경 쓸 것 없이 hasNext(), next()로 사용만 하면 됨. 사용자의 편의성 제공)
  • 컬렉션에 iterator()를 호출해서 Iterator를 구현한 객체를 얻어서 사용
List list = new ArrayList();	// 다른 컬렉션으로 변경할 때는 이 부분만 고치면 된다.
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
Iterator it = list.iterator();
while(it.hasNext()){
	Object obj = it.next();
	System.out.println(obj);
}
// iterator는 1회용이라 다쓰고 나면 다시 얻어와야 한다.
it = list.iterator();	// 새로운 객체를 얻는다.
while(it.hasNext()){
	System.out.println(it.next());
}

Collection c = new TreeSet(); 으로 선언했을 때의 장점 :
Collection c = new HashSet(); 으로 변경했을 때도 Collection의 공통 기능(메서드)만 썼다는 사실을 알기 때문에(리모콘은 Collection) 실제 객체에 상관없이 아래 작성한 코드를 검토할 필요가 없음.

Map과 Iterator

  • Map은 iterator()가 없다.(Map은 Collection을 상속받지 않으므로)
  • 따라서 keySet(), entrySet(), values()를 호출해야 한다.
Map map = new HashMap();
...
Set eSet = map.entrySet();
Iterator it = eSet.iterator();
profile
Enjoy to study

0개의 댓글