Java
Iterable와 Iterator에 대해
윤라프
2022. 7. 3. 17:07
Iterable
Iterable 인터페이스는 java.lang 패키지에 속하며 반복할 수 있는 데이터 구조를 나타낸다.
Iterable 인터페이스는 Iterator를 생성하는 메서드를 제공한다.
Iterable을 사용할 때 인덱스로 요소를 가져올 수 없으며 데이터 구조에서 첫 번째 또는 마지막 요소도 가져올 수 없다.
Java의 모든 Collection은 Iterable 인터페이스를 구현한다.
향상된 for문을 사용하여 Collection 내부의 element들을 반복할 수 있다.
그러나 Iterable 인터페이스를 구현하는 객체만 이러한 명령문 내에서 사용할 수 있다.
List<String> list = getStrings();
list.forEach(System.out::println);
Iterator
Iterator는 Java Collections Framework의 구성원이며 java.util 패키지에 속한다.
이 인터페이스를 사용하면 반복 중에 컬렉션에서 요소를 검색하거나 제거할 수 있다.
데이터 구조를 반복하고 해당 요소를 검색하는 데 도움이 되는 next()와 hasNext() 메서드가 제공된다.
그리고 iterator가 가리키는 현재 요소를 제거하는 remove() 메서드가 있다.
마지막으로 forEachRemaining(Consumer<? super E> action) 메서드는 데이터 구조 내부의 나머지 요소 각각에 대해 주어진 작업을 수행한다.
Iterable과 Iterator의 차이점
Iterable | Iterator |
for-each문을 사용하여 반복할 수 있는 컬렉션을 나타낸다. | Collection을 반복하는 데 사용할 수 있는 인터페이스를 나타낸다. |
Iterable을 구현할 때 iterator() 메서드를 재정의해야 한다. | Iterator를 구현할 때 hasNext() 및 next() 메서드를 재정의해야한다. |
반복 상태를 저장하지 않는다. | 반복 상태를 저장한다. |
반복 중에 요소를 제거하는 것은 허용되지 않는다. | 반복 중에 요소를 제거하는 것이 허용된다. |