ListIterator 는 List 컬렉션을 순회할 때 하용하는 인터페이스이다. ListIterator 를 사용하면 요소의 추가, 삭제, 이전 요소 및 다음 요소에 접근하는 등의 작업을 할 수 있다.
ListIterator 주요 메서드
- add(E e): 해당 리스트에 전달된 요소를 현재 커서 위치에 추가한다.
- hasNext(): 해당 리스트를 순방향으로 순회할 때 다음 요소가 있는지 확인한다. 다음 요소가 있으면 true를 반환한다.
- hasPrevious(): 해당 리스트를 역방향으로 순회할 때 이전 요소가 있는지 확인한다. 이전 요소가 있으면 true를 반환한다.
- next(): 리스트의 다음 요소를 반환하고, 커서의 위치를 순방향으로 이동한다.
- nextIndex(): next() 메소드를 호출하면 반환될 요소의 인덱스를 반환한다.
- previous(): 리스트의 이전 요소를 반환하고, 커서의 위치를 역방향으로 이동한다.
- previousIndex(): previous() 메소드를 호출하면 반환될 요소의 인덱스를 반환한다.
- remove(): next()나 previous() 메소드에 의해 반환된 마지막 요소를 삭제한다.
- set(E e): next()나 previous() 메소드에 의해 반환된 마지막 요소를 전달된 객체로 대체한다.
ListIterator 메서드 사용 예
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListIteratorExample {
public static void main(String[] args) {
List<String> myList = new ArrayList<>();
myList.add("Apple");
myList.add("Banana");
myList.add("Cherry");
ListIterator<String> iterator = myList.listIterator();
// add(E e)
iterator.add("Dragonfruit");
System.out.println("After adding Dragonfruit: " + myList);
// hasNext()
if (iterator.hasNext()) {
System.out.println("There is a next element.");
} else {
System.out.println("No next element.");
}
// hasPrevious()
if (iterator.hasPrevious()) {
System.out.println("There is a previous element.");
} else {
System.out.println("No previous element.");
}
// next()
System.out.println("Next element: " + iterator.next());
// nextIndex()
System.out.println("Index of next element: " + iterator.nextIndex());
// previous()
System.out.println("Previous element: " + iterator.previous());
// previousIndex()
System.out.println("Index of previous element: " + iterator.previousIndex());
// remove()
iterator.next(); // Move cursor to next element
iterator.remove();
System.out.println("After removing last returned element: " + myList);
// set(E e)
iterator.next(); // Move cursor to next element
iterator.set("Grape");
System.out.println("After setting last returned element to Grape: " + myList);
}
}
/*
After adding Dragonfruit: [Dragonfruit, Apple, Banana, Cherry]
There is a next element.
There is a previous element.
Next element: Apple
Index of next element: 2
Previous element: Apple
Index of previous element: 0
After removing last returned element: [Dragonfruit, Banana, Cherry]
After setting last returned element to Grape: [Dragonfruit, Grape, Cherry]
*/
정리
ListIterator는 Iterator와 달리 양방향으로 순회할 수 있는 기능을 제공한다. 또한 리스트에 요소를 추가하거나 제거할 수 있는 기능도 포함되어 있다.
'알아가기 > Java' 카테고리의 다른 글
Java의 BigInteger 클래스 (0) | 2024.11.25 |
---|---|
[Java] MathContext 정확도를 조절하는 자바 클래스 (0) | 2024.01.27 |
[Java] Arrays.stream() 및 sum() 메서드 (0) | 2024.01.25 |
[Java] Arrays.stream() 및 Arrays.copyOfRange() 함수 (0) | 2023.08.29 |
[Java] 토큰으로 분리하는 StringTokenizer (0) | 2023.08.27 |