Comparar campos cadastrados de um Vector

5 respostas
jackbutler

Alguém tem algum exemplo de comparação de dados cadastrados (ou a serem) usando Vector?

Exemplo:

1 - Cadastrar os dados do user
2 - Quando for cadastrar o user+1, comparar se esses
dados são iguais ao do user, caso não, voltar p/ 1.

O código (sem comparar) está assim:

private void bCadastrarUsuarioActionPerformed(java.awt.event.ActionEvent evt) {                                           
        
        String nome;
        int idade, codigo;
        
        if (!txtCodigo.getText().equals(""))
        {
            codigo = Integer.parseInt(txtCodigo.getText());
            idade = Integer.parseInt(txtIdade.getText());
            nome = txtNome.getText();

            usuario = new Usuario(codigo, nome, idade);
            vetorUsuario.addElement(usuario);
            mostraUsuariosCadastrados();
        }
}
public void mostraUsuariosCadastrados(){

        String mensagem = "";
        
        for (int indice = 0; indice < vetorUsuario.size(); indice++)
        {
            usuario = (Usuario) vetorUsuario.elementAt(indice);
            
            mensagem += "Registro (" +(indice + 1)+ ")";
            mensagem += "\nCódigo = " +gerente.getCodigo();
            mensagem += "\nNome = "   +gerente.getNome();
            mensagem += "\nIdade = " +gerente.getIdade();
            mensagem += "\n";
            
        }
        campoListaUsuario.setText(mensagem);
    }

Obrigado.

Abraço,

5 Respostas

ViniGodoy

Se seu user implementa equals, você pode fazer simplesmente:

if (userList.contains(user)) //Volta para o um else cadastra();

Só um detalhe. Por que você está usando um Vector? O ideal é usar a interface List e a classe ArrayList, que é praticamente igual, mas não é sincronizada. Para usa-la a declaração é muito similar a do Vector.

Ao invés de
Vector<User> userList = new Vector<User>();

Use:
List<User> userList = new ArrayList<User>();

jackbutler

ViniGodoy:
Se seu user implementa equals, você pode fazer simplesmente:

if (userList.contains(user)) //Volta para o um else cadastra();

Só um detalhe. Por que você está usando um Vector? O ideal é usar a interface List e a classe ArrayList, que é praticamente igual, mas não é sincronizada. Para usa-la a declaração é muito similar a do Vector.

Ao invés de
Vector<User> userList = new Vector<User>();

Use:
List<User> userList = new ArrayList<User>();

Opa, valeu pela dica.

Muito obrigado, Vini :wink:

Y

Ao invés de

if (!txtCodigo.getText().equals("")) {

Fica mais bacana:

if (!txtCodigo.getText().trim().isEmpty()) {

E ao invés de usar um loop no vetor/list, use um iterator; é uma boa prática de programação quando usando Collections:

import java.util.Iterator;
...
public void mostraUsuariosCadastrados()
  {
   String mensagem = "";
   int index = 0;
   Iterator< Usuario > usuarios = vetorUsuario.iterator();

   while (usuarios.hasNext())
     {
      Usuario u = usuarios.next();

      mensagem += "Registro (" + (++index) + ")";
      mensagem += "\nCódigo = " + u.getCodigo();
      mensagem += "\nNome = " + u.getNome();
      mensagem += "\nIdade = " + u.getIdade();
      mensagem += "\n";
     }

   campoListaUsuario.setText(mensagem);
  }
jackbutler
Yky Mattshawn:
Ao invés de
if (!txtCodigo.getText().equals("")) {

Fica mais bacana:

if (!txtCodigo.getText().trim().isEmpty()) {

E ao invés de usar um loop no vetor/list, use um iterator; é uma boa prática de programação quando usando Collections:

import java.util.Iterator;
...
public void mostraUsuariosCadastrados()
  {
   String mensagem = "";
   int index = 0;
   Iterator< Usuario > usuarios = vetorUsuario.iterator();

   while (usuarios.hasNext())
     {
      Usuario u = usuarios.next();

      mensagem += "Registro (" + (++index) + ")";
      mensagem += "\nCódigo = " + u.getCodigo();
      mensagem += "\nNome = " + u.getNome();
      mensagem += "\nIdade = " + u.getIdade();
      mensagem += "\n";
     }

   campoListaUsuario.setText(mensagem);
  }

Hm... obrigado pela dica, Yky!

Nunca estudei essa parte de (isso faz parte de Generics?).

Vou checar isso!

Abraço,

jackbutler
Beleza assim:
if (!txtCodigo.getText().trim().isEmpty()) {

Mas caso eu queira fazer para TODOS os campos do formulário? Vai ficar um código feio!

Tipo:

if (!txtCodigo.getText().trim().isEmpty() && ...)

Ah sim... falando em "tratar" criei essa classe a parte para tratar o campos do formulário.

(Detalhe, usei o JFormattedTextField como caixa de texto, apesar de ainda não estudar como utilizar a classe MaskFormatter).

Só que... como estou começando a manipular agora com GUI, não sei como interagir essa classe com os JFormattedTextField (ou JTextField, "tanto faz").

import java.io.*;

public class Tratamento
{
    public static double lerDouble()
    {
        try
        {
            BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
            String s = entrada.readLine();

            return Double.parseDouble(s);
        }
        catch(IOException e)
        {
            System.out.println("Erro na entrada");
            System.exit(0);

            return 0;
        }
        catch(NumberFormatException e)
        {
            System.out.println("Tipo incompativel com Double.");
            System.exit(0);

            return 0;
        }
    }
//---------------------------------------------------------------------------------------------
    public static int lerInt()
     {
         try
         {
             BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
             int i = entrada.read();
             
             return i;
         }
         catch(IOException e)
         {
             System.out.println("Erro na entrada");
             System.exit(0);
         
             return 0;
         } 
         catch(NumberFormatException e)
         {
             System.out.println("Tipo incompativel com Int.");
             System.exit(0);
             return 0;
         }
     }
//---------------------------------------------------------------------------------------------     
     public static String lerString()
     {
         try
         {
             BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
             String s = entrada.readLine();
             
             return s;
         }
         catch(IOException e)
         {
             System.out.println("Erro na entrada");
             System.exit(0);
         
             return "";
         } 
         catch(NumberFormatException e)
         {
             System.out.println("Tipo incompativel com Int.");
             System.exit(0);

             return "";
         }
     }
}
Criado 20 de abril de 2007
Ultima resposta 20 de abr. de 2007
Respostas 5
Participantes 3