728x90
반응형
Iterator interface
Iterator interface는 컬렉션 원소에 접근하기 위한 반복자를 제공한다.
그러나 키-값 구조의 Map 컬렉션은 반복자를 제공하지 않는다.
Iterator interface에는 유용한 다음과 같은 메서드가 존재한다.
boolean hasNext() | 다음 원소의 존재 여부를 반환한다. |
E next() | 다음 원소를 반환한다. |
default void remove() | 마지막에 순회한 컬렉션의 원소를 삭제한다. |
예시로 아래 코드를 확인해 보겠다.
import java.util.*;
public class App {
public static void main(String[] args) throws Exception {
Collection<String> list = Arrays.asList("A", "B", "C");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext())
System.out.print(iterator.next() + " ");
System.out.println();
while (iterator.hasNext())
System.out.print(iterator.next() + " ");
System.out.println();
iterator = list.iterator();
while (iterator.hasNext())
System.out.print(iterator.next() + " ");
System.out.println();
}
}
위 코드에서는 Collection 인터페이스 타입의 list 변수를 통해 List 인터페이스를 다루고 있다.
iterator는 일회성으로 사용되기 때문에 한 번 순회를 마친 iterator는 사용할 수 없다.
따라서 두 번째 while문에서는 아무것도 출력되지 않는다.
이후 새로운 iterator 객체를 다시 생성해 주는 것으로 세 번째 while문에서는 정상적으로 데이터가 출력됨을 확인할 수 있다.
728x90
반응형
'Java > Java 문법' 카테고리의 다른 글
[Java] 스레드(Thread), 모니터(Monitor), Runnable 인터페이스 (0) | 2024.10.27 |
---|---|
[Java] 예외 처리 (검사형 예외, 비검사형 예외) (0) | 2024.10.27 |
[Java] 컬렉션 프레임워크 (Collection Framework), List 인터페이스 (List interface) (0) | 2024.10.14 |
[Java] package, import (0) | 2024.10.11 |
[Java] 오브젝트 클래스 (Object Class) (0) | 2024.10.11 |