컬렉션에 저장된 요소를 읽는 방법을 표준화한 것이다.
Collection 인터페이스에서는 iterator() 메서드를 정의하였는데, Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 메서드이다.
List와 Set 인터페이스의 경우 Collection 인터페이스를 상속받았기 때문에 iterator() 메서드를 사용할 수 있다.
메서드 | 설명 |
---|---|
boolean hasNext() | 해당 이터레이션(iteration)이 다음 요소를 가지고 있으면 true를 반환하고, 더 이상 다음 요소를 가지고 있지 않으면 false를 반환함. |
E next() | 이터레이션(iteration)의 다음 요소를 반환함. |
default void remove() | 해당 반복자로 반환되는 마지막 요소를 현재 컬렉션에서 제거함. (선택적 기능) |
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() + " ");
}
hasMoreElements()와 nextElement() 메소드를 사용하여 Iterator와 같은 작업을 수행하는 메서드이다. 기존 코드와의 호환성을 위해 남아있다.
JDK 1.2부터 제공된 인터페이스로, Iterator 인터페이스를 상속받아 여러 기능을 추가한 인터페이스이다.
컬렉션 요소에 접근할 때 한 방향으로 접근 가능한 Iterator와는 달리, ListIterator는 양방향 이동이 가능하다. 단, List 컬렉션 클래스에서만 사용이 가능하다.
http://tcpschool.com/java/java_collectionFramework_iterator 참조
LinkedList<Integer> lnkList = new LinkedList<Integer>();
lnkList.add(4);
lnkList.add(2);
lnkList.add(3);
lnkList.add(1);
ListIterator<Integer> iter = lnkList.listIterator();
while (iter.hasNext()) {
System.out.print(iter.next() + " "); // 4 2 3 1
}
while (iter.hasPrevious()) {
System.out.print(iter.previous() + " "); // 1 3 2 4
}