Java 컬렉션 : Iterator

I C-AN·2021년 8월 12일
0

Java

목록 보기
22/26
post-thumbnail

Iterator ?

컬렉션에 저장된 데이터를 접근 방법을 표준화한 인터페이스이다. List, Set, Map 각 컬렉션의 구조가 다르지만 Iterator를 사용하면 hasNext()next()로 컬렉션의 데이터를 읽어올 수 있다. iterator를 컬렉션에 호출해서 Iterator를 구현한 객체를 얻어서 사용한다. Iterator는 일회용으로 사용하고 나면 다시 생성해야 한다.

List list = new ArrayList(); // 다른 컬렉션도 가능ㅍ
Iterator it = list.iterator(); // Iterator 객체를 반환

while(it.hasNext()) { // 데이터의 유무를 boolean 값으로 반환
	System.out.println(it.next()); // 있으면 데이터를 불러온다
}

Map과 Iterator

Map에는 iterator()가 없다. 컬렉션은 ListSet의 공통점을 뽑아 만든 부모 인터페이스이고 Map은 컬렉션의 자손이 아니다. 때문에 keySet(), entrySet(), values()를 호출해서 사용해야 한다.

Iterator 예제

ArrayList list = new ArrayList(); 
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");

Iterator it = list.iterator(); // List와 Set 인터페이스에서 사용 가능
while (it.hasNext()) {
	Object obj = it.next();
	System.out.println(obj);
}

ListIterator 예제

ListIteratorIterator가 단방향인 단점을 보완해 hasPrevious()를 추가하여 양방향으로 데이터를 찾을 수 있는 인터페이스다. 하지만 List를 구현한 경우에만 사용할 수 있다.

import java.util.*;

class ListIteratorEx1 {
	public static void main(String[] args) {
		ArrayList list = new ArrayList();
		list.add("1");
		list.add("2");
		list.add("3");
		list.add("4");
		list.add("5");

		ListIterator it = list.listIterator();

		while(it.hasNext()) {
			System.out.print(it.next()); // 순방향으로 진행하면서 읽어온다
		}
		System.out.println();

		while(it.hasPrevious()) {
			System.out.print(it.previous()); // 역방향으로 진행하면서 읽어온다
		}
		System.out.println();
	}
}
profile
할 수 있다

0개의 댓글