알아가기/Java

[Java] ListIterator: 리스트 순회를 위한 양방향 인터페이스

XEV 2024. 4. 1. 23:58

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와 달리 양방향으로 순회할 수 있는 기능을 제공한다. 또한 리스트에 요소를 추가하거나 제거할 수 있는 기능도 포함되어 있다.