Iterator ite = Set.iterator();
Iterator ite = List.iterator();
ListIterator listite = List.listIterator();
Podemos usar Iterator
para percorrer a Set
ou a List
ou a Map
. Mas ListIterator
só pode ser usado para atravessar a List
, não pode atravessar a Set
. Por quê?
Eu sei que a principal diferença é que, com o iterador, podemos viajar em apenas uma direção, mas também com as ListIterator
duas. Há outras diferenças lá? E alguma vantagem de ListIterator
mais Iterator
?
Respostas:
As diferenças estão listadas no Javadoc for ListIterator
Você pode
fonte
Set
é simples: não há "ponto atual": os elementos não têm índice e não há maneira útil de adicionar um elemento "antes" ou "depois" de outro.Existem duas diferenças:
Podemos usar o Iterator para percorrer Set e List e também mapear os tipos de objetos. Enquanto um ListIterator pode ser usado para percorrer objetos do tipo lista, mas não para objetos do tipo conjunto.
Ou seja, podemos obter um objeto Iterator usando Set e List, veja aqui:
Usando o Iterator, podemos recuperar os elementos do Objeto de Coleção somente na direção direta.
Métodos no iterador:
hasNext()
next()
remove()
Mas nós obtemos o objeto ListIterator apenas na interface List, veja aqui:
onde como um ListIterator permite percorrer as duas direções (para frente e para trás). Por isso, tem mais dois métodos como
hasPrevious()
eprevious()
excepto os da Iterator. Além disso, podemos obter índices dos elementos seguintes ou anteriores (usandonextIndex()
epreviousIndex()
respectivamente)Métodos no ListIterator:
ou seja, não podemos obter o objeto ListIterator da interface Set.
Referência: - Qual a diferença entre Iterator e ListIterator?
fonte
Aqui estão as diferenças entre eles:
iterator
você, você pode avançar apenas, mas comListIterator
você pode voltar também ao ler os elementos.ListIterator
você pode obter o índice a qualquer momento durante a navegação, o que não é possível comiterator
s.iterator
você pode verificar apenas o próximo elemento disponível ou não, maslistiterator
pode verificar os elementos anteriores e seguintes.listiterator
você pode adicionar novo elemento a qualquer momento, enquanto estiver percorrendo. Não é possível comiterator
.listiterator
você, você pode modificar um elemento ao atravessar, o que não é possível comiterator
.Aparência e sensação do iterador:
Aparência do ListIterator:
fonte