ListIterator는 Iterator의 확장 버전으로, 양방향으로 순회할 수 있는 기능을 제공합니다. ListIterator는 주로 List 인터페이스를 구현한 컬렉션 (예: ArrayList, LinkedList)에서 사용됩니다.
주요 메서드
ListIterator 인터페이스는 Iterator와 비슷한 메서드를 가지며, 추가적으로 양방향 순회 및 요소의 추가, 수정, 삭제를 지원하는 메서드들이 있습니다.
- boolean hasNext(): 다음 요소가 존재하는지 확인하고, 존재하면 true를 반환합니다.
- E next(): 다음 요소를 반환하고 커서를 다음 위치로 이동합니다. 만약 더 이상 다음 요소가 없으면 - NoSuchElementException을 발생시킵니다.
- boolean hasPrevious(): 이전 요소가 존재하는지 확인하고, 존재하면 true를 반환합니다.
- E previous(): 이전 요소를 반환하고 커서를 이전 위치로 이동합니다. 만약 더 이상 이전 요소가 없으면 NoSuchElementException을 발생시킵니다.
- int nextIndex(): 다음 요소의 인덱스를 반환합니다.
- int previousIndex(): 이전 요소의 인덱스를 반환합니다.
- void remove(): 최근에 반환된 요소를 제거합니다.
- void set(E e): 최근에 반환된 요소를 주어진 요소로 교체합니다.
- void add(E e): 현재 위치에 주어진 요소를 추가합니다.
사용 예제
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListIteratorExample {
public static void main(String[] args) {
// List에 데이터 추가
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
// ListIterator를 사용하여 리스트 순회
ListIterator<String> iterator = list.listIterator();
// 순방향으로 순회하면서 출력
System.out.println("Forward traversal:");
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
// "Banana"를 만나면 "Grapes" 추가
if (element.equals("Banana")) {
iterator.add("Grapes");
}
}
// 역방향으로 순회하면서 출력
System.out.println("\nBackward traversal:");
while (iterator.hasPrevious()) {
String element = iterator.previous();
System.out.println(element);
}
}
}
위 예제에서는 ArrayList를 생성하고, listIterator() 메서드를 호출하여 리스트의 ListIterator를 얻어옵니다. 그리고 순방향으로 순회하면서 "Banana"를 만나면 "Grapes"를 추가하고, 역방향으로 순회하면서 출력합니다. ListIterator를 사용하면 순방향과 역방향으로 자유롭게 이동하면서 요소를 조작할 수 있습니다.
With ChatGPT
'JAVA > 포스팅' 카테고리의 다른 글
자바 컬렉션 프레임워크 Arrays (0) | 2023.11.18 |
---|---|
자바 컬렉션 프레임워크 Enumeration (0) | 2023.11.18 |
자바 컬렉션 프레임워크 Iterator (0) | 2023.11.18 |
자바 컬렉션 프레임워크 Queue (0) | 2023.11.18 |
자바 컬렉션 프레임워크 Stack (0) | 2023.11.18 |