Iterator

8 respostas
E

Olá Pessoa, uma dúvida sobre o funcionamento do Iterator:

  1. Ele trabalha sobre coleções, Vector por exemplo.
  2. Vector retorna um Iterator para um objeto Iterator, correto ?
  3. Iterator permite ‘navegação’ sobre os dados do objeto Vector
  4. Nesta navegação, ele permite visualização dos dados da coleção, sendo assim, o Iterator retornado pelo Vector, é um array ?

Alguém tem uma boa explicação para isso ?

Abraços e obrigado

Everton

8 Respostas

Rafael_Steil

Vector nao eh vetor… Vector eh uma estrutura de dados do Java, muito parecido com o ArrayList. Alias, voce deveria usar ArrayList ao inves de Vector.

Voce usa Iterator para navegar pelos dados da collection. O retorno de uma chamada ao metodo next() do iterator depende do conteudo do teu vector / list. Se voce adicionou objetos do tipo Pessoa, sera retornado objetos do tipo Pessoa… se adicionou String, sera retornado String.

Faca um teste com iterator… vc soh vai aprender o funcionamento testando mesmo.

Rafael

Ironlynx
Vector eh sincronizado,por isso eh mais lento do que list.Lambrando tb q vc pode sincronizar a List.(prefiro essa opção a usar Vector).Olha o Iterador trabalhando(exemplinho básico):
import java.util.*;
 
public class TestaVector {
    public static void main(String []args){
        
          Vector v=new Vector();
          v.add("Rafael");
          v.add("evertonfoz");
          v.add("Ironlynx");
          
           Iterator iter=v.iterator();
           
           while(iter.hasNext())                                 
             System.out.println(iter.next());
    
                                          }
                        }
brlima

O problema que eu achei é que vc nao pode mexer no objeto que tá sendo “iterado”. Por exeplo, querer remover o indice 10 se vc estiver no indice 9. Num dá :frowning: E tb num dá pra continuar de um certo ponto. :frowning:

cv1

Bruno, por isso voce tem metodos como o remove() nos Iterators. :wink:

rvaldomiro

Esta eu não sabia. Qual a diferença básica entre o ArrayList e o Vector e o porque de usar um ao invés do outro :?:

caiofilipini

A diferença principal é essa. :wink:

[]'s

Operador_Nabla

Eu também estou brincando com Iterators (ou melhor, ListIterators) em casa (estou pegando algumas aplicações em C++ e traduzindo para Java, como parte do meu aprendizado) e eu percebi uma coisa: o retorno dos métodos next() e previous() é um objeto genérico do tipo Object. Para que eu possa tratá-lo como um objeto do tipo que eu armazenei na minha coleção, tenho que aplicar um casting sobre a saída do next()/previous(), convertendo para o tipo que eu armazenei (eu, particularmente, acho isso nojento, pois não é difícil perder o controle sobre o tipo que está armazenado na coleção; por isso, eu espero ansiosamente pelas futuras implementações de classes parametrizadas).

É assim mesmo ou tem jeito melhor de se fazer isto?

cv1

É assim mesmo, Nabla. Até virem os Generics :wink:

Criado 24 de abril de 2004
Ultima resposta 27 de abr. de 2004
Respostas 8
Participantes 8