Iterator, ListIterator

김남건·2021년 7월 24일
0
post-thumbnail

Iterator<E> 인터페이스

컬렉션에 저장된 요소를 읽는 방법을 표준화한 것이다.
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() + " ");
}

Enueration<E> 인터페이스

hasMoreElements()와 nextElement() 메소드를 사용하여 Iterator와 같은 작업을 수행하는 메서드이다. 기존 코드와의 호환성을 위해 남아있다.

ListIterator<E> 인터페이스

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
}

Reference

http://tcpschool.com/java/java_collectionFramework_iterator

0개의 댓글

관련 채용 정보