몬그로이

ListIterator 본문

Organizing Docs/Java Docs

ListIterator

Mon Groy 2024. 7. 7. 20:00

인터페이스 ListIterator

List 인터페이스에서 파생된 인터페이스로, 리스트의 요소들을 순회하고 수정하는 데 사용됨

 

 

메서드

 

1. ListIterator listIterator()

 

리스트의 첫 번째 요소부터 시작하여 리스트를 순회하는 ListIterator 객체를 반환
처음 호출 시, ListIterator는 리스트의 첫 번째 요소 앞에 위치

즉, 첫 번째 요소 이전을 가리키는 상태


2. ListIterator listIterator(int index)

 

지정된 인덱스부터 시작하여 리스트를 순회하는 ListIterator 객체를 반환
인덱스는 0부터 리스트 크기까지의 범위


ListIterator의 주요 기능


양방향 순회

ListIterator는 순방향과 역방향으로 리스트를 순회

next() 메서드로 순방향으로, previous() 메서드로 역방향으로 이동


요소 접근 및 수정

ListIterator를 통해 현재 가리키고 있는 요소에 접근하거나 수정

set(E e) 메서드로 현재 요소를 수정

add(E e) 메서드로 새로운 요소를 추가

 

요소 삭제

remove() 메서드를 사용하여 현재 가리키고 있는 요소를 삭제

 next() 또는 previous()로 이동한 다음에 호출하여 삭제

*주로 순서가 있는 리스트(예: ArrayList, LinkedList)를 다룰 때 사용

        // ArrayList 생성

        List<String> list = new ArrayList<>();

       list.add("apple");

        list.add("banana");

        list.add("cherry");

        list.add("date");

 

        // ListIterator를 이용한 순방향 순회

        ListIterator<String> iterator = list.listIterator();

        while (iterator.hasNext()) {

                String element = iterator.next();

                System.out.println("현재 요소: " + element);

        }

        System.out.println();

 

        // ListIterator를 이용한 역방향 순회

        while (iterator.hasPrevious()) {

                String element = iterator.previous();

                System.out.println("현재 요소: " + element);

        }

        System.out.println();

 

        // ListIterator를 이용한 요소 수정

        iterator = list.listIterator();

        while (iterator.hasNext()) {

                String element = iterator.next();

                if (element.equals("banana")) {

                        iterator.set("grape"); // 현재 요소를 수정

                }

        }

        System.out.println("수정 후 리스트: " + list);

        System.out.println();

 

        // ListIterator를 이용한 요소 추가

        iterator = list.listIterator();

        while (iterator.hasNext()) {

              String element = iterator.next();

                if (element.equals("cherry")) {

                     iterator.add("kiwi"); // 현재 위치에 새로운 요소 추가

                }

        }

        System.out.println("추가 후 리스트: " + list);

        System.out.println();

 

        // ListIterator를 이용한 요소 삭제

        iterator = list.listIterator();

        while (iterator.hasNext()) {

                String element = iterator.next();

                if (element.equals("date")) {

                    iterator.remove(); // 현재 요소 삭제

                }

        }

        System.out.println("삭제 후 리스트: " + list);