본문 바로가기
카테고리 없음

[JAVA] Iterator이란? 사용방법과 예제 & 장점과 단점

by 코딩 시그널 2020. 12. 26.
반응형

자바의 컬렉션에 저장된 요소를 읽어오는 방법을 Iterator 인터페이스로 표준화하고 있습니다. Collection 인터페이스에서는 Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 iterator() 메서드를 정의하여 각 요소에 접근하도록 하고 있습니다. 따라서 Collection 인터페이스를 상속받는 List와 Set 인터페이스에서도 iterator() 메서드를 사용할 수 있습니다.

 

- 정리 -

Iterator란? 자바의 컬렉션에 저장되어 있는 요소들을 읽어오는 방법의 인터페이스

컬렉션으로부터 정보를 얻어내는 인터페이스

 

쉽게 설명하면 책을 보관하는 책장(Collection)이 있고, 그곳에는 책(Collection 안에 들어갈 객체)이 있습니다. 이 책장은 도서관 사서(iterator)가 관리합니다. 사서는 단순 무지한 녀석이라 책장 처음부터 끝까지 한 번에 하나씩밖에 못 가져옵니다.

 

다음 예제는 리스트를 반복자(iterator)를 사용하여 순회하는 예제입니다.

 

LinkedList<Integer> lnkList = new LinkedList<Integer>();

lnkList.add(4);
lnkList.add(2);
lnkList.add(3);
lnkList.add(1);

Iterator<Integer> iter = lnkList.iterator();
while (iter.hasNext()) {
    System.out.print(iter.next() + " ");
}

//결과 : 4 2 3 1

 

Iterator 인터페이스는 다음과 같은 메서드를 사용하여 컬렉션의 각 요소에 접근할 수 있습니다.

 

메서드 설명
boolean hasNext() 해당 이터레이션(iteration)이 다음 요소를 가지고 있으면 true를 반환하고, 더 이상 다음 요소를 가지고 있지 않으면 false를 반환함.
E next() 이터레이션(iteration)의 다음 요소를 반환함.
default void remove() 해당 반복자로 반환되는 마지막 요소를 현재 컬렉션에서 제거함. (선택적 기능)

Iterator의 장점과 단점

Iterator 개체를 사용하면 size 메서드를 얻어와서 반복 처리하는 것보다 속도에서 불리합니다. 이는 Iterator 개체를 사용하는 부분이 있기 때문에 불가피한 사항입니다. 하지만 컬렉션 종류에 관계없이 일관성 있게 프로그래밍할 수 있다는 장점을 갖고 있습니다. 소스 코드에 어떠한 컬렉션을 사용할지 정해지지 않았지만 컬렉션 내에 보관한 모든 내용을 출력하는 등의 작업을 먼저 하길 원한다면 Iterator를 사용하는 것은 좋은 선택입니다.

댓글