Java는 컬렉션에 저장된 데이터를 하나씩 탐색하기 위해 이 두 인터페이스를 제공했습니다. iterator와 list iterator의 내부 구현으로 인해 서로 다르지만 두 반복자의 주요 의제는 동일합니다.
다음은 Iterator와 ListIterator의 중요한 차이점입니다.
| Sr. 아니요. | 키 | 반복자 | 목록 반복자 |
|---|---|---|---|
| 1 | 적용 | Iterator는 컬렉션 유형에 관계없이 모든 컬렉션을 순회하는 데 사용할 수 있습니다. | 목록 반복자는 arraylist,linkedlist 등과 같은 목록 컬렉션 구현 클래스만 반복하는 데 사용할 수 있습니다. |
| 2 | 통화 | 언급한 바와 같이 Iterator는 Set, List, Queue, Deque와 같은 모든 Collection 구현 인터페이스 및 Map 인터페이스의 구현된 모든 클래스에서 요소를 열거하는 데 사용해야 합니다. Iterator 객체는 Collection 인터페이스의 iterator() 메소드를 호출하여 생성할 수 있습니다. | 반면, ListIterator는 List의 요소를 열거할 때 사용해야 합니다. ListIterator의 객체는 List 인터페이스에 있는 listIterator() 메소드를 호출하여 생성할 수 있습니다. |
| 3 | 데이터 트래버스 | 반복자의 경우 데이터 순회는 한 방향으로만 가능합니다. Iterator는 순방향으로만 순회할 수 있기 때문입니다. | 목록 반복기는 데이터를 양방향으로 순회하도록 정방향 및 역방향 모두를 순회할 수 있습니다. |
| 4 | 삭제 | 반복자의 경우 요소 삭제가 허용되지 않습니다. | ListIterator는 목록 컬렉션의 요소를 대체할 수 있습니다. |
| 5 | 추가 | 반복자의 경우 ConcurrentModificationException이 발생하므로 요소 추가가 허용되지 않습니다. | ListIterator는 언제든지 쉽게 목록 컬렉션에 요소를 추가할 수 있습니다. |
| 6 | 수정 | 이터레이터의 경우 ConcurrentModificationException이 발생하므로 요소 수정이 허용되지 않습니다. | ListIterator는 set() 메서드를 호출하여 언제든지 목록 컬렉션의 요소를 쉽게 수정할 수 있습니다. |
| 7 | 요소 색인 | 반복자를 사용하는 동안 컬렉션에서 순회된 요소의 인덱스를 가져올 수 없습니다. | ListIterator에는 nextIndex() 및 previousIndex()와 같은 메서드가 있어 List를 탐색하는 동안 언제든지 요소의 인덱스를 얻을 수 있습니다. |
반복자 대 ListIterator의 예
JavaTester.java
import java.io.*;
import java.util.*;
public class JavaTester {
public static void main(String[] args){
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
//Iterator
Iterator itr = list.iterator();
System.out.println("Iterator traversal:");
while (itr.hasNext())
System.out.print(itr.next() + " ");
System.out.println();
// ListIterator
ListIterator i = list.listIterator();
System.out.println("ListIterator Forward traversal:");
while (i.hasNext()){
System.out.print(i.next() + " ");
System.out.println();
System.out.println("ListIterator Backward traversal : ");
}
while (i.hasPrevious()){
System.out.print(i.previous() + " ");
System.out.println();
}
}
} 출력
Iterator traversal: 1 2 3 4 5 ListIterator Forward traversal: 1 ListIterator Backward traversal : 2 ListIterator Backward traversal : 3 ListIterator Backward traversal : 4 ListIterator Backward traversal : 5 ListIterator Backward traversal : 5 4 3 2 1