Dúvida sobre a classe Vector

Estou começando a programar na linguagem Java, e em uma das atividades propostas por meu professor da faculdade, estou com uma dificuldade. Vou tentar explicar:

Quando crio um vetor padrão como: int [] vetor = new int[10], consigo percorrer todas as posições do vetor declarando uma variável (int i), e a colocando em um loop. Dessa maneira posso comparar (através do método .equals()) o nome que o usuário digitou com os nomes armazenados no vetor.

A dúvida é…como fazer isso usando a Classe Vector.

Espero ter sido claro…

Vlw
Thiago Dantas

Você pode fazer assim se o Vector for parametrizado:

Vector<Integer> vetor = new Vector<Integer>(); for (Integer elemento : vetor) { //faça alguma coisa System.out.println(elemento); }
Ou assim se não for:

Vector vetor = new Vector(); Iterator it = vetor.iterator(); while (it.hasNext()){ //faça alguma coisa System.out.println(it.next()); }
Qualquer dúvida posta aí! :thumbup:

Vlw mesmo…
acho q fico com a segunda, pois estou guardando dentro do Vector valor do tip Cliente(um classe criada).
Bom…se naum eh abusar soh gostaria de entender melhor o q foi feito…tipo o q eh Interator…e o método usado na estrutura de repetição…
soh para conhecimento…

vlw mesmo…show esse forum…eh minha primeira vez…mas caralho…resposta prontamente…vlw mesmo…

Thiago Dantas

Olha só, no primeiro exemplo, eu parametrizei o Vector, quer dizer que eu defini que tipo de Objeto ele vai conter. Já que vc está usando uma classe do tipo Cliente, vc pode fazer o seguinte:

Vector<Cliente> vetor = new Vector<Cliente>();

Sacou? assim vc pode usar o for do primeiro exemplo, no caso:

for ( Cliente elemento : vetor )

Esse for “varre” o Vector, passando por todos os elementos, um por um.
O Iterator é um objeto usado para percorrer alguns tipos de Collections (Vector, Arraylist) que não estejam parametrizadas. Quando eu faço:

Iterator it = vetor.iterator()Eu pego o iterator para percorrer pelo Vector vetor. A linha:

while ( it.hasNext() )Verifica se Iterator encontrou mais elementos, e a linha:

System.out.println(it.next());Imprime o elemento encontrado pelo Iterator.

Tá compreendido? Qualquer coisa já sabe! :thumbup:

Saquei…caraca…estou aprendendo mais aki do q na facul…srsrs

tah entendi tudo muito bem…

ficou mais ou menos assim (desculpa a ignorancia se estiver errado…):

public void buscarCliente(String nomeDoCliente)
{
Cliente cliente;

	Iterator it = cadastro.iterator();
	while (it.hasNext())
	{
		if (nomeDoCliente.equals(cliente.nome));
		//System.out.println(it.next());
		JOptionPane.showInputDialog("Cliente encontrado");
	}
		

}//Fim do método buscarCliente

mas houve um erro de compilação…
cannot find symbol class Interator

vou tentar ver se parametrizando consigo…
ah…jah q estou abusando…a condição na estrutura de repetição soa meio diferente da habitual…pode explicar…??

vlw brother…

Thiago Dantas

o nome da classe é Iterator, e nao Interator…

Se mesmo assim nao der, verifique se ele está nos imports da sua classe…

Cara, só uma coisa, já que vc é novo no fórum, dá uma lida nesse post:
http://www.guj.com.br/posts/list/50115.java
que te ensina à formatar seu código usando recursos do fórum e essas coisas, blz?

O erro é pq vc não importou a classe Iterator, onde vc importou a classe Vector, coloque a seguinte linha:

import java.util.Iterator;

Aí vai funcionar. Sobre a estrutura de repetição, qual vc não entendeu, a paramtrizada ou a outra?

Vlw…
fiz da primeira forma…parametrizando…e deu certo…

tah ae:

public void buscarCliente(String nomeDoCliente)
{
//Percorre todo o Vector
for (Cliente cliente : cadastro)
{
//Compara o nome digitado pelo usuário com o nome de cada posição do Vector
if (nomeDoCliente.equalsIgnoreCase(cliente.nome))
{
JOptionPane.showMessageDialog(null, “Cliente encontrado”);
}
}

}//Fim do método buscarCliente

compilei e executei…e consegui achar o cliente…

a única dúvida ainda persiste na sintaxe da condição do for…um pouco diferente…

podem explicar?

Thiago Dantas

bom se o tipo é cliente é interessante:

Iterator<Cliente>id=array.iterator();
while(id.hashNext()){
Cliente c = id.next();
System.out.println(c);
}

acho que o uso do for aprimorado eh ideial para vc…realmente ele veio para facilitar!!

Vlw galera…aprendi mesmo…
a todos um obrigado…vlw mesmo…
usei a parametrização…srsrsr

bom pra dizer q aprendi a lição de postagem de código ae vai
Code

public class Valew
{
   public static void main (String [] args)
  {
      System.out.println ("Vlw galera");

  }

}

ops

public class Vlw
{
  public static void main (String [] args)
  {
     System.out.println("Vlw mesmo");
  }

}

ae so uma dica quando postar errado nao precisa repetir so clicar em editar!! :smiley:

Ok, agora que você entendeu… sem querer complicar…

A classe Vector é antiga e a sun recomenda que não seja mais usada.

No lugar use a classe ArrayList que é quase igual.

Você declara um ArrayList assim:
List<Cliente> clientes = new ArrayList<Cliente>();

Para adicionar um cliente:
clientes.add(umCliente);
Para pegar um cliente
Cliente cliente = clientes.get(indice);
Para limpar a lista:
clientes.clear;

O seu método de busca ficaria, com o List, praticamente igual:

public void buscarCliente(String nomeDoCliente) 
{ 
   Cliente cliente; 

   Iterator it = cadastro.iterator(); 
   while (it.hasNext()) 
   { 
      if (nomeDoCliente.equals(cliente.nome)); 
      //System.out.println(it.next()); 
      JOptionPane.showInputDialog("Cliente encontrado"); 
   } 
}//Fim do método buscarCliente 

Ou, no caso do Java 5, você poderia usar um for-each:

public void buscarCliente(String nomeDoCliente) 
{ 
   for (Cliente cliente : cadastro) 
   {
      if (nomeDoCliente.equals(cliente.nome)); 
      //System.out.println(it.next()); 
      JOptionPane.showInputDialog("Cliente encontrado"); 
   } 
}//Fim do método buscarCliente 

Aê gente… aproveitando o tópico, eu tento, tento, mas não intendo o iterator, não consigo entender o que ele faz!

Tipo, o que ele recebe pra conseguir percorrer o “ArrayList” ? o que cada método dele faz ao ser executado ?

Se puderem, da uma forcinha aí !

ele itera, ele percorre sua lita, seu vetor…

quando vc tem:
hashNext() - ele verifica se existe mais de 1 elemento, porem ele nao referencia ao proximo elemento…
next() - ele mostra o elemento atual e em seguida referencia ao proximo… com o for aprimorado simplifica o uso do Iterator como vc viu nos codigos acima…

Iterator<Tipo> it = lista.iterator();
//enquanto tive elemetos
while(it.hashNext()){
Tipo x = it.next();
System.out.println(x);

é isso apenas… um das maneira de implementacao…
Agora vou apenas completar o que o vinny falou a respeito da classe Vector o uso dela tb foi depreciado em programas onde a sincronização nao influencia no resultado final… e isso vc pode testar… por exemplo faça um codigo com Vector e outra com LinkedList e perceba se o desempenho vai ser o mesmo…

O método se chama [size=18]hasNext() [/size]

opa eh verdade eh tanto hash pra la pra q fico perdido!!