CS/Java

Iterator 이해하기

fit(i) 2023. 9. 14. 14:33

Iterator

  • 자바 컬렉션(List, Set, Map)에 저장되어있는 데이터에 접근하기 위한 인터페이스이다.
  • 따라서 컬렉션의 종류와 관계없이 동일한 순차 탐색 기능을 제공한다.

 

  • Iterator와 Enumeration의 차이
    • Enumeration은 자바 초기 버전에서 지원하는 기능으로, Hashtable, Vector에 사용 가능하다
    • Iterator는 Collection 인터페이스를 상속받은 List, Set, Map, Vector 등에 Enumeration의 기능을 지원하도록 하는 인터페이스이다.
  • 지원하는 메소드
    • asIterator()
      • Enumeration을 Iterator 변환하는 메소드이고, Enumeration의 hasMoreElements(), nextElement()를 사용할 수 있도록 지원한다.
    • hasNext()
      • 다음 element가 있으면 true, 없으면 false를 반환한다.
    • next()
      • 컬렉션에 저장된 다음 element를 반환한다. 반환타입은 Iterator의 제네릭 타입과 동일하다.
    • remove()
      • 컬렉션에서 꺼내온 요소를 제거한다.
    • forEachRemaining()
      • 다음 element가 있으면, 해당 element를 꺼내 지정된 작업을 수행한다.
      • 다음 코드와 같이 동작한다.
      default void forEachRemaining(Consumer<? super E> action) {
            Objects.requireNonNull(action);
            while (hasNext())
                action.accept(next());
        }