Collection의 Iterator

KIMA·2022년 7월 7일
0

java

목록 보기
3/10
post-thumbnail

Iterator란?

: Collection에 저장된 요소들을 순차적으로 읽어오기위해 사용되는 인터페이스

  • 각각의 Collection들은 모두 Iterator의 iterator()를 구현하고 있고, iterator()는 Iterator를 구현한 클래스의 인스턴스를 return함
    • 이때, 해당 Collection의 특징에 맞는 Iterator를 반환하게 됨
      • List : 첫 요소부터 마지막 요소까지 순차적으로 읽어옴
      • Set, Map : 요소들의 순서가 존재하지 않으므로, 무작위로 요소들을 읽어옴
  • 요소들을 역순으로도 읽어오기 위해선, 양방향으로 접근이 가능한 ListIterator 사용

Method

  • 예시
    • List, Set
      Collection collection = new ArrayList(); // new HashSet();
      Iterator iterator = collection.iterator();
      
      while(iterator.hasNext()) {
          System.out.println(next());
          iterator.remove();
      }
    • Map
      • map은 entry(key, value)로 이루어져 있으므로, entrySet()이나 keySet()을 얻어 사용

        Map map = new HashMap();
        Iterator iterator = map.entrySet().iterator();
        
        while(iterator.hasNext()) {
            System.out.println(next());
            iterator.remove();
        }

ListIterator

: Collection에 저장된 요소들을 양방향에서 순차적으로 읽어오기위해 사용되는 인터페이스

  • 양방향에서 접근하므로, 순서가 존재하는 Collection인 List에서만 사용 가능

추가된 Method

  • hasPrevious() : 가져올 이전 요소가 존재하는지 확인
  • previous() : 이전 요소를 가져옴
    • hasPrevious()로 가져올 요소의 유무를 확인하고 실행하는 것을 권장
  • add(Object o) : 새로운 요소 추가
  • set(Object o) : 가져온 요소를 입력받은 요소로 변경
  • nextIndex() / previousIndex()
  • 예시
    List list = new ArrayList(); 
    ListIterator listIterator= list.listIterator();
    
    while(listIterator.hasNext()) {
        System.out.println(next());
    }
    
    while(listIterator.hasPrevious()) {
        System.out.println(previous());
    }
profile
안녕하세요.

0개의 댓글