Map은 키(Key)와 값(Value)으로 이루어진 데이터의 집합이다. 순서는 유지되지 않으며 키는 중복을 허용하지 않는다.
Map의 클래스로는 TreeMap, Hashtable, HashMap 등이 있다.
Iterator는 이런 집합체로부터 정보를 얻어낸다고 볼 수 있다. 집합체를 다룰 때는 개별적인 클래스에 대해 데이터를 읽는 방법을 알아야하기 때문에 각 컬렉션에 접근이 힘들어진다. Iterator를 쓰게 되면 어떤 컬렉션이라도 동일한 방식으로 접근이 가능하여 그 안에 있는 항목들에 접근할 수 있는 방법을 제공한다.(다형성)
Iterator의 메소드에는 hasNext(), next(), remove()가 있다.
각각의 기능은 다음과 같다.
hasNext() : 읽어올 요소가 남아있는지 확인하는 메소드. 요소가 있다면 true, 없다면 false
next() : 다음 데이터를 반환한다.
remove() : next()로 읽어온 요소를 삭제한다.
메소드의 호출 순서는 hasNext() -> next() -> remove() 이다.
아래는 Iterator를 사용한 예제이다.
리스트에 들어있는 "일","월","수" 중에서 "수"라는 데이터를 삭제하는 예제이다.
package biz.test;
import java.util.ArrayList;
import java.util.Iterator;
public class ListTest {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("LIST CREATED.");
ArrayList list = new ArrayList();
list.add("일");
list.add("월");
list.add("수");
Iterator iter = list.iterator();
while(iter.hasNext()==true){
String day = (String)iter.next();
if(day == "수"){
iter.remove();
}
System.out.println("Day : " + day);
}
System.out.println("-----------------");
iter = list.iterator();
while(iter.hasNext()==true){
String day = (String)iter.next();
System.out.println("Day : " + day);
}
}
}