ListIterator — 양방향 리스트 반복자

ListIterator — 양방향 리스트 반복자

ListIterator<E>프로그래머가 리스트를 어느 방향으로든 순회하고, 반복 중 리스트를 수정하고, 리스트에서 반복자의 현재 위치를 얻을 수 있는 리스트용 반복자예요. Iterator<E>를 확장해요.

출처: Java API Reference

본문

public interface ListIterator<E> extends Iterator<E>

ListIterator에는 현재 요소가 없어요. 커서 위치는 항상 previous()가 반환할 요소와 next()가 반환할 요소 사이에 놓여요. 길이 n인 리스트의 반복자는 n+1개의 가능한 커서 위치를 가져요.

remove()set(Object) 메서드는 커서 위치를 기준으로 정의되지 않고, next() 또는 previous()가 마지막에 반환한 요소에 대해 동작해요. 이 인터페이스는 Java Collections Framework의 멤버예요.

순회

  • hasNext() — 정방향으로 더 많은 요소가 있으면 true를 반환해요.
  • next() — 다음 요소를 반환하고 커서를 앞으로 이동해요. previous()와 번갈아 호출하면 같은 요소를 반복해서 반환해요.
  • hasPrevious() — 역방향으로 더 많은 요소가 있으면 true를 반환해요.
  • previous() — 이전 요소를 반환하고 커서를 뒤로 이동해요.

위치

  • nextIndex() — 다음 next()가 반환할 요소의 인덱스를 반환해요(리스트 끝이면 리스트 크기).
  • previousIndex() — 다음 previous()가 반환할 요소의 인덱스를 반환해요(리스트 시작이면 -1).

수정

  • remove()next() 또는 previous()가 마지막에 반환한 요소를 제거해요(선택적 연산). next/previous 호출마다 한 번만 호출할 수 있고, 마지막 next/previous 이후 add(E)를 호출하지 않았을 때만 가능해요.
  • set(E e)next() 또는 previous()가 마지막에 반환한 요소를 지정 요소로 교체해요. 마지막 next/previous 이후 remove()add(E)를 호출하지 않았을 때만 가능해요.
  • add(E e) — 지정 요소를 리스트에 삽입해요. next()가 반환할 요소 바로 앞, previous()가 반환할 요소 바로 뒤에 넣어요. 이후 next()에는 영향이 없고 previous()는 새 요소를 반환해요.

더 알아보기 (Learn more)