ListIterator
인터페이스 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);