본문 바로가기

Java/Java 문법

[Java] Iterator 인터페이스

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
반응형