Iterator

thsamajiki·2022년 10월 25일
0

자료구조

목록 보기
4/8

Iterator는 컬렉션에 저장된 요소에 접근하는데 사용되는 인터페이스이다. (++ Interator의 기능에서 양방향 조회 기능이 추가된 ListIterator도 있다!)

컬렉션 프레임워크에서는 컬렉션에 저장된 요소들을 읽어오는 방식을 표준화하였는데, 그것이 바로 Iterator이다. 우선 List(ArrayList, LinkedList)의 경우, 순서가 있기 때문에 Iterator가 없어도 index를 이용해 순차적으로 접근하여 읽어오는 것이 가능하다.

그러나 순서가 없는 Set, Map 등의 경우 이렇게 읽어오는 것이 불가능하여, Set은 toArray() 메소드를 이용해 배열로 변환한 후 차례로 읽어줘야한다. 그리고 Map의 경우에는 key를 이용해 값을 읽는 get() 메소드가 있지만, 차례로 읽어오는 메소드는 정의되어 있지 않다.

이처럼, 서로 다른 방식으로 자료들을 읽어오는 대신, 저장된 자료들을 순차적으로 뽑아오면 된다는 공통된 특징을 이용해서 읽어오는 방식을 표준화한 것이 Iterator이다.

Iterator를 사용하기 위해서는, Iterator를 구현한 클래스의 인스턴스를 반환하는 iterator() 메소드가 필요하다. 그런데 iterator()는 원래 Collection 인터페이스에 정의된 메소드이기 때문에, Map의 경우 Set(key-value 쌍, keys) 혹은 Collection(values)으로 변환한 후 iterator()를 사용할 수 있다. 그리고 iterator 객체를 얻은 후에는 해당 클래스의 hasNext(), next() 메소드를 이용해 데이터를 반복적으로 가지고 온다.

Iterator<Integer> iterator = set.iterator();

while(iterator.hasNext()) {
		System.out.println(iterator.next());
}
profile
안드로이드 개발자

0개의 댓글