Iterator란?
Iterator 인터페이스는 Collection과는 별개로 존재하는 인터페이스이다. java 1.2에서 발표된 인터페이스로 Java.util 패키지에 속해있으며 Java Collections Framework의 멤버다. Collection에 저장된 요소를 읽어오는 것을 표준화 한 인터페이스이다.
Iterator 인터페이스 내부 메서드
hasNext() | 다음 요소를 가지고 있으면 true 반환 |
next() | 다음 요소를 반환 |
remove() | 해당 iterator로 반환된 요소를 제거 |
forEachRemaining() | 예외가 throw 될 때까지 각 나머지 요소에 대해 작업 수행 |
Iterable이란?
Collection의 상위 인터페이스로(=모든 컬렉션은 Iterable 인터페이스를 구현한다), java.lang 패키지에 속한다. 반복할 수 있는 데이터 구조를 나타내며 Iterator를 생성하는 메서드를 제공한다. 향상된 for문(for-each)에서 대상이 되도록 도와준다.
Iterable 인터페이스의 forEach() 메서드는 default 메서드이므로 컬렉션에서 바로 forEach가 가능한 이유가 바로 이러한 이유다.
iterator vs iterable
iterator와 iterable의 차이를 표로 정리하자면 아래와 같다.
iterator[반복자] | iterable[반복 가능한] |
컬렉션을 반복하는 데 사용할 수 있는 인터페이스 | for-each 루프를 사용하여 반복할 수 있는 컬렉션 |
hasNext(), next() 메서드를 재정의 해야함 | iterator() 메서드를 재정의 해야함 |
반복 상태를 저장함 | 반복 상태를 저장하지 않음 |
반복 중 요소 제거가 허용됨 | 반복 중 요소 제거를 허용하지 않음 |
https://recordsoflife.tistory.com/1162
https://zepettoworld.tistory.com/76
'Backend > JAVA' 카테고리의 다른 글
[JAVA] 스레드에서의 경쟁상태(Race condition) (1) | 2024.01.30 |
---|---|
[JAVA] 쓰레드(Thread)란? Java의 동기화 기능은 무엇일까? (2) | 2024.01.25 |
[JAVA] Stream API란? Java Stream API의 특징은? (0) | 2024.01.19 |
[JAVA] JVM의 메모리 구조 (0) | 2024.01.17 |
[Java] #19.3 자바 입출력 - char 단위 입출력 (0) | 2023.08.15 |