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