ListIterator — 양방향 리스트 반복자
ListIterator — 양방향 리스트 반복자
ListIterator<E>는 프로그래머가 리스트를 어느 방향으로든 순회하고, 반복 중 리스트를 수정하고, 리스트에서 반복자의 현재 위치를 얻을 수 있는 리스트용 반복자예요. Iterator<E>를 확장해요.
본문
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()는 새 요소를 반환해요.