숑숑이의 개발일기
article thumbnail

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
profile

숑숑이의 개발일기

@숑숑-

풀스택 개발자 준비중입니다