[Resolvido] Ajuda com arrays de object

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 . .

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…

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.

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 :?: :?: :?:

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.

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 >>>

[code]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);
}

}[/code]

Minha classe BD >>>

[code]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;
}

}[/code]

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…

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

:idea: