[Resolvido] Ajuda com arrays de object

7 respostas
rafael.borges

Olá…

Bom, sou iniciante na linguagem e tenho uma dúvida.
Eu tenho uma classe (bd) com arrays de objetos.
Nessa array será armazenado dados como “codigo”, “nome”, “função”.
No meu programa terá uma tela que pedirá o codigo da pessoa. Se o codigo já estiver “cadastrado”, entrará numa outra tela. Carregando todas as informações da pessoa - (codigo - nome - função).
Quero saber como faço para percorrer a array (já implementei*), e analisar se o codigo obtido por uma textField qualquer, esta “armazenado” na array ? :?:

obs.:estou implementando no Netbeans…

Desde já agradeço . .

7 Respostas

discorpio

Boa noite Rafael.Borges.

Presumindo que voce tenha uma classe “Bean” desta forma:

....
public class ClienteBean {
    
       private Integer codigo;
       private String nome, funcao;

       public ClienteBean(Integer cod, String nomecli, String func){
             setCodigo(cod);
             setNome(nomecli);
             setFuncao(func);
       }

       public Integer getCodigo(){
           return codigo;
       }

       public void setCodigo(Integer codigo){
           this.codigo = codigo;
       }

       public String getNome(){
           return nome;
       }
 
       public void setNome(String nome){
          this.nome = nome;
       }

       public String getFuncao(){
          return funcao;
       }

       public void setFuncao(String funcao){
          this.funcao = funcao;
       }
}

E presumindo ainda que voce tenha populado o seu ClienteBean desta forma:

....
        Collection vetorbeans = new ArrayList();
        ClienteBean cliente = null;

         cliente = new ClienteBean(1, "Rafael Borges", "Analista de Sistemas");
         vetorbeans.add(cliente);

         cliente = new ClienteBean(2, "Discorpio", "Programador");
         vetorbeans.add(cliente);
         .....

Agora pesquisando a coleção (Collection)

....
      Iterator I = vetorbeans.Iterator();
      while (I.hasNext()) {
             ClienteBean cli = (ClienteBean) I.next();
             if (cli.getNome().equals("Rafael Borges")){
                System.out.println(cli.getCodigo().toString());
                System.out.println(cli.getNome());
                System.out.println(cli.getFuncao());
             }
      }

Espero que sirva…

luciano2

Se seu Bean tiver o método Equals implementado você pode usar o método contains da Interface Collection para verificar se o objeto já existe.

discorpio

Boa tarde a todos.

Se a sua intenção é evitar o NullPointer, então não vejo muita diferença entre usar o método “contains(…)” da Interface Collection e o método booleano hasNext() da classe Iterator. Dai o loop “while (I.hasNext())” que vai executar o looping equanto o objeto existir dentro da coleção.

Agora se a sua intenção é testar qual o tipo de Objeto armazenado na coleção, então neste caso cabe o "contains(…), visto que uma coleção (Collection) pode ser um ArrayList contendo vários tipos de Objetos (ClienteBean, VendasBean, EstoqueBeans e etc), entretanto, também acho que não faz muita diferença se voce acrescentar ao ArrayList apenas um tipo de objeto (ClienteBean).

Quanto ao criar um método “Equals” dentro Bean, acho também que é poupar pouca digitação de caracteres desta forma:

// Dentro do Bean

     public class ClienteBean {

     .....
     .....

       public Boolean equals(String texto){
          if (getNome().equals(texto){
             return true;
          else
             return false;
          }
       }
     }
     
     // Fora do Bean
     ...
     ClienteBean cli = (ClienteBean) I.next();
     if (cli.getNome().equals("Rafael Borges")){   
        ...
     }

     // ou usar
     ClienteBean cli = (ClienteBean) I.next();
     if (cli.equals("Rafael Borges")){   
        ...
     }

Ou seja, poupou a digitação de 9 caracteres para escrever vários outros implementando um método dentro do Bean, o que eu considero disperdício de recurso, além do que o método equals(…) dentro do Bean está engessado somente a pesquisa do nome, e e se o cliente quiser pesquisar pelo Código ou pela Função :?: :?: :?:

luciano2

Mas na verdade oque ele especificou é que se o código já existi-se, nesse caso acho que o código garante a unicidade do registro, então usando equals e constains seria a melhor sollução.

rafael.borges

Boa noite a todos ...

"Discorpio" e "Luciano" , muito obrigado pela ajuda . . .

O codigo do Discorpio está bem parecido com o meu.

Foi de Grande ajuda . . .

Minha classe Pessoa >>>

package classes;

public class pessoa {

    private int codigo;
    private String nome;
    private String funcao;
   

    public void cadastrar(int umcod, String umnome, String umafuncao) {
        String.valueOf(codigo);
        setCodigo(umcod);
        setNome(umnome);
        setFuncao(umafuncao);
        bd.vecPessoa.add(this);

    }

    public int getCodigo() {
        return codigo;
    }
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getNome() {
        return nome;
    }
     public void setNome(String nome) {
        this.nome = nome;
    }

    public String getFuncao() {
        return funcao;
    }
    public void setFuncao(String funcao) {
        this.funcao = funcao;
    }
    public String toString(){
        String s = (this.getCodigo()+this.getNome()+this.getFuncao());
        return (s);
    }
}

Minha classe BD >>>

package classes;

import java.util.Vector;

public class bd {

    public static Vector vecPessoa = new Vector();
    public static Vector vecPeca = new Vector();
    public static Vector vecRetirada = new Vector();

    public static Vector getVecPeca() {
        return vecPeca;
    }

    public static void setVecPeca(Vector vecPeca) {
        bd.vecPeca = vecPeca;
    }

    public static Vector getVecPessoa() {
        return vecPessoa;
    }

    public static void setVecPessoa(Vector vecPessoa) {
        bd.vecPessoa = vecPessoa;
    }

    public static Vector getVecRetirada() {
        return vecRetirada;
    }

    public static void setVecRetirada(Vector vecRetirada) {
        bd.vecRetirada = vecRetirada;
    }
}

Minha ação

Iterator I = bd.vecPessoa.iterator();
        while (I.hasNext()) {
            pessoa cli = (pessoa) I.next();
            if (String.valueOf(cli.getCodigo()).equals(txtDigiteCodigo.getText())) {
                txtNome.setText(cli.getNome());
                txtTipo.setText(cli.getFuncao());
            } else {
                JOptionPane.showMessageDialog(null, "Codigo Inexistente...");
            }
        }

Estou terminando de implementar meu "controle de materiais".
Tenho que tratar alguns erros "ai", mas já foi de grande ajuda .

vlw...

luciano2

Se resolveu então coloca o titulo do post para [Resolvido]

rafael.borges

:idea:

Criado 27 de maio de 2010
Ultima resposta 31 de mai. de 2010
Respostas 7
Participantes 3