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]