Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 Iterator와 ListIterator의 차이점

<시간/>

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