메서드 | 설명 |
---|---|
boolean hasNext() | 읽어 올 요소가 남아있는지 확인한다. 있으면 true, 없으면 false를 반환한다. |
Object next() | 요소를 읽어 온다. next()를 호출하기 전에 hasNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전하다. |
void remove() | next()로 읽어 온 요소를 삭제한다. next()를 호출한 다음에 remove()를 호출해야한다. (선택적 기능) |
Collection c = new ArrayList(); // 다른 컬렉션으로 변경시 이부분만 고치면 된다.
Iterator it = c.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
ArrayList 대신 Collection인터페이스를 구현한 다른 컬렉션 클래스의 객체를 생성하도록 변경하기만 하면 된다.
Iterator를 이용해서 컬렉션의 요소를 읽어오는 방법을 표준화했기 때문에 이처럼 코드의 재사용성을 높이는 것이 가능한 것이다.
Map인터페이스를 구현한 컬렉션 클래스는 키(key)와 값(value)을 쌍(pair)으로 저장하고 있기 때문에 iterator()를 직접 호출할 수 없다.
그 대신 keySet()이나 entrySet()과 같은 메서드를 통해서 키와 값을 가각 따로 Set의 형태로 얻어 온 후에 다시 iterator()를 호출해야 Iterator를 얻을 수 있다.
Map map - new HashMap();
...
Iterator it = map.entrySet().iterator();
import java.util.*;
class IteratorEx1 {
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");
Iterator it = list.iterator();
while(it.hasNext()){
Object obj = it.next();
System.out.println(obj);
}
} //main
}
Enumeration Iterator의 구버전
ListIterator Iterator에 양방향 조회기능추가(List를 구현한 경우만 사용가능)
Enumeration인터페이스의 메서드
메서드 | 설명 |
---|---|
boolean hasMoreElements() | 읽어 올 요소가 남아있는지 확인한다. 있으면 true, 없으면 false를 반환한다. Iterator의 hasNext()와 같다. |
Object nextElement() | 요소를 읽어 온다. nextElement()를 호출하기 전에 has =MoreElements()를 호출해서 읽어올 요소가 남아있는지 확인하는 것이 안전하다. |
Iterator의 next()와 같다. |
ListIterator의 메서드
메서드 | 설명 |
---|---|
void add(Object o) | 컬렉션에 새로운 객체(o)를 추가한다.(선택적 기능) |
boolean hasNext() | 읽어 올 다음 요소가 남아있는지 확인한다. 있으면 true, 없으면 false를 반환 |
boolean hasPrevious() | 읽어 올 이전 요소가 남아있는지 확인한다. 있으면 true, 없으면 false를 반환 |
Object next() | 다음 요소를 읽어 온다. next()를 호출하기 전에 hasNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전하다. |
Object previous() | 이전 요소를 읽어 온다. previous()를 호출하기 전에 hasPrevious()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전하다. |
int nextIndex() | 다음 요소의 index를 반환한다. |
void remove() | next() 또는 previous()로 읽어 온 요소를 삭제한다. |
반드시 next()나 previous()를 먼저 호출한 다음에 이 메서드를 호출해야한다.(선택적 기능) | |
void set(Object o) | next() 또는 previous()로 읽어 온 요소를 지정된 객체(o)로 변경한다. |
반드시 next()나 previous()를 먼저 호출한 다음에 이 메서드를 호출해야한다.(선택적 기능) |