Iterator ite = Set.iterator();
Iterator ite = List.iterator();
ListIterator listite = List.listIterator();
Iterator
a Set
또는 a List
또는 a 를 횡단하는 데 사용할 수 있습니다 Map
. 그러나 ListIterator
를 통과하는 데만 사용할 수 있으며 a를 통과 List
할 수는 없습니다 Set
. 왜?
주요 차이점은 반복자를 사용하면 한 방향으로 만 ListIterator
여행 할 수 있지만 양방향으로 여행 할 수 있다는 것입니다. 다른 차이점이 있습니까? 그리고 ListIterator
이상의 장점 Iterator
?
답변
차이점은 Javadoc for ListIterator에 나열되어 있습니다.
당신은 할 수 있습니다
- 거꾸로 반복
- 언제든지 반복자를 얻습니다.
- 언제든지 새로운 가치를 추가하십시오.
- 그 시점에서 새로운 가치를 설정하십시오.
답변
두 가지 차이점이 있습니다.
-
Iterator를 사용하여 Set and List와 Map type of Object를 탐색 할 수 있습니다. ListIterator를 사용하여 List-type Objects를 탐색 할 수 있지만 Set-types of Objects는 탐색 할 수 없습니다.
즉, Set and List를 사용하여 Iterator 객체를 얻을 수 있습니다. 여기를 참조하십시오.
Iterator를 사용하면 Collection Object에서 정방향으로 만 요소를 검색 할 수 있습니다.
반복자의 메소드 :
hasNext()
next()
remove()
Iterator iterator = Set.iterator(); Iterator iterator = List.iterator();
-
그러나 List 인터페이스에서만 ListIterator 객체를 얻습니다. 여기를 참조하십시오.
여기서 ListIterator를 사용하면 어느 방향 으로든 앞뒤로 이동할 수 있습니다. 이 같은 두 가지 이상의 방법이있다 그래서
hasPrevious()
및previous()
반복자보다 다른. 또한 다음 또는 이전 요소의 색인을 얻을 수 있습니다 (nextIndex()
및previousIndex()
각각 사용)ListIterator의 메소드 :
- hasNext ()
- 다음()
- 이전()
- hasPrevious ()
- 없애다()
- nextIndex ()
- previousIndex ()
ListIterator listiterator = List.listIterator();
즉, Set 인터페이스에서 ListIterator 객체를 가져올 수 없습니다.
참조 : -Iterator와 ListIterator의 차이점은 무엇입니까?
답변
Iterator는 ListIterator의 수퍼 클래스입니다.
차이점은 다음과 같습니다.
- 를 사용
iterator
하면 앞으로 만 이동할 수 있지만ListIterator
요소를 읽는 동안 백 워드를 이동할 수도 있습니다. - 를 사용
ListIterator
하면 이송 중에 언제라도 인덱스를 얻을 수 있습니다iterator
. s 로는 불가능합니다 . - 사용
iterator
가능한 다음 요소 만 확인할 수 있지만listiterator
이전 및 다음 요소는 확인할 수 있습니다. - 를 사용
listiterator
하면 이송하는 동안 언제든지 새로운 요소를 추가 할 수 있습니다. 로 사용할 수 없습니다iterator
. - 를 사용
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
}