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() 메서드를 재정의해야한다. |
반복 상태를 저장하지 않는다. | 반복 상태를 저장한다. |
반복 중에 요소를 제거하는 것은 허용되지 않는다. | 반복 중에 요소를 제거하는 것이 허용된다. |
'Java' 카테고리의 다른 글
Java의 접근제어자(Access Modifier) (0) | 2022.08.29 |
---|---|
자바에서의 제네릭과 와일드카드 (0) | 2022.05.12 |
Java Garbage Collection(GC)란 무엇이고 동작방식과 G1GC에 대해 (0) | 2022.05.08 |
JVM 구조와 Java의 실행방식 (0) | 2022.05.07 |
멀티 스레드의 스레드들이 객체를 공유하는데 임계영역의 문제를 해결하지 않은 경우 (0) | 2022.04.09 |