Iterator와 Iterable의 차이는 무엇인가요?

  • IteratorIterable은 컬렉션 프레임워크에서 사용되는 개념이다.

img_2.png
  • 자바의 컬렉션 프레임워크는 컬렉션에 저장된 요소를 읽어오는 방법을 Iterator 인터페이스로 표준화하고 있다.

  • Collection 인터페이스를 상속받은 자료구조 List, Set, QueueCollection 상위에 있는 Iterable 인터페이스의 Iterator 기능을 사용할 수 있다.

Iterator 인터페이스가 제공하는 메서드

  • hasNext() : 다음 요소가 없으면 false 반환

  • next() : 다음 요소 반환

  • remove() (default) : 마지막 요소 제거

(여기서 자바는 향상된 for문을 사용하도록 권장한다. 향상된 for문(Enhanced for)을 사용하면 같은 성능을 유지하면서도 코드의 명확성을 확보하고 발생할 수 있는 버그를 예방해준다.)

  • ArrayListList 인터페이스의 구현체

  • ListCollection을 상속

  • CollectionIterable을 상속

  • ArrayList -> List -> Collection -> Iterable

정리

  • Iterable 인터페이스는 하위 클래스에서 Iterator의 생성을 강제하는 역할을 한다.

  • Iterable을 상속받은 Collection의 하위 클래스들은 모두 Iterator를 가지고 있다.

  • IteratorhasNext(), next() 등을 구현하고 있기 때문에 이를 활용하여 컬렉션의 각 요소에 접근할 수 있다.

참고

Last updated