[java] Iterator와 Listiterator의 차이점은 무엇입니까?

Iterator ite = Set.iterator();
Iterator ite = List.iterator();

ListIterator listite = List.listIterator();

Iteratora Set또는 a List또는 a 를 횡단하는 데 사용할 수 있습니다 Map. 그러나 ListIterator를 통과하는 데만 사용할 수 있으며 a를 통과 List할 수는 없습니다 Set. 왜?

주요 차이점은 반복자를 사용하면 한 방향으로 만 ListIterator여행 할 수 있지만 양방향으로 여행 할 수 있다는 것입니다. 다른 차이점이 있습니까? 그리고 ListIterator이상의 장점 Iterator?



답변

차이점은 Javadoc for ListIterator에 나열되어 있습니다.

당신은 할 수 있습니다

  • 거꾸로 반복
  • 언제든지 반복자를 얻습니다.
  • 언제든지 새로운 가치를 추가하십시오.
  • 그 시점에서 새로운 가치를 설정하십시오.

답변

두 가지 차이점이 있습니다.

  1. Iterator를 사용하여 Set and List와 Map type of Object를 탐색 할 수 있습니다. ListIterator를 사용하여 List-type Objects를 탐색 할 수 있지만 Set-types of Objects는 탐색 할 수 없습니다.

    즉, Set and List를 사용하여 Iterator 객체를 얻을 수 있습니다. 여기를 참조하십시오.

    Iterator를 사용하면 Collection Object에서 정방향으로 만 요소를 검색 할 수 있습니다.

    반복자의 메소드 :

    1. hasNext()
    2. next()
    3. remove()
    Iterator iterator = Set.iterator();
    Iterator iterator = List.iterator();
  2. 그러나 List 인터페이스에서만 ListIterator 객체를 얻습니다. 여기를 참조하십시오.

    여기서 ListIterator를 사용하면 어느 방향 으로든 앞뒤로 이동할 수 있습니다. 이 같은 두 가지 이상의 방법이있다 그래서 hasPrevious()previous()반복자보다 다른. 또한 다음 또는 이전 요소의 색인을 얻을 수 있습니다 ( nextIndex()previousIndex()각각 사용)

    ListIterator의 메소드 :

    1. hasNext ()
    2. 다음()
    3. 이전()
    4. hasPrevious ()
    5. 없애다()
    6. nextIndex ()
    7. previousIndex ()
    ListIterator listiterator = List.listIterator();

    즉, Set 인터페이스에서 ListIterator 객체를 가져올 수 없습니다.

참조 : -Iterator와 ListIterator의 차이점은 무엇입니까?


답변

Iterator는 ListIterator의 수퍼 클래스입니다.

차이점은 다음과 같습니다.

  1. 를 사용 iterator하면 앞으로 만 이동할 수 있지만 ListIterator요소를 읽는 동안 백 워드를 이동할 수도 있습니다.
  2. 를 사용 ListIterator하면 이송 중에 언제라도 인덱스를 얻을 수 있습니다 iterator. s 로는 불가능합니다 .
  3. 사용 iterator가능한 다음 요소 만 확인할 수 있지만 listiterator이전 및 다음 요소는 확인할 수 있습니다.
  4. 를 사용 listiterator하면 이송하는 동안 언제든지 새로운 요소를 추가 할 수 있습니다. 로 사용할 수 없습니다 iterator.
  5. 를 사용 listiterator하여 이송하는 동안 요소를 수정할 수 있습니다 iterator.

반복기 모양과 느낌 :

 public interface Iterator<E> {
    boolean hasNext();
    E next();
    void remove(); //optional-->use only once with next(), 
                         dont use it when u use for:each
    }

ListIterator 모양과 느낌 :

public interface ListIterator<E> extends Iterator<E> {
    boolean hasNext();
    E next();
    boolean hasPrevious();
    E previous();
    int nextIndex();
    int previousIndex();
    void remove(); //optional
    void set(E e); //optional
    void add(E e); //optional
}


답변