Olá se essa sua Collection for um Set qualquer, não irá funcionar deste jeito, porque a interface Set, não indexa posições, você terá que passar o Objeto em si e não a posição dele.
Foi o que pensei.
No meu caso tenho a seguinte situação.
ClienteBean A = new ClienteBean();
A.setCliNome("Eu");
A.setCliEnd("Ali");
...
ClienteBean B = new ClienteBean();
B.setCliNome("Voce");
B.setCliEnd("Aqui");
...
List<ClienteBean> clientes = new ArrayList<ClienteBean>();
clientes.add(A);
clientes.add(B);
No caso quero excluir um desses. Como ficaria ?
danielbussade
Neste seu caso com List, funcionaria da forma que você fez anteriormente, passando a posição:
lista.remove(2);
Só não funciona com Set, no caso do Set, ele vai excluir o objeto que você passar comparando com o metodo equals, da sua classe.
laelsonc
Tentei varias vezes mas não retira o item.
Tem mais alguma coisa ?
Como eu faria para no caso retirar da lista o elemento onde o cliNome fosse B.setCliNome(“Voce”) com equals ?
T
thingol
Você pode remover esse cliente pela posição se usar o método remove:
Você pode remover esse cliente pelo valor se você definir um método “equals” para ClienteBean, mas aí você precisa passar uma instância de ClienteBean para o método remove, não uma string.
laelsonc
thingol:
Você pode remover esse cliente pela posição se usar o método remove:
Você pode remover esse cliente pelo valor se você definir um método “equals” para ClienteBean, mas aí você precisa passar uma instância de ClienteBean para o método remove, não uma string.
Foi como falei. Tentei fazer como no exemplo acima mas não consegui. Ele não tira nada da Array.
Tem como vc fazer um exemplo criando esta instancia ai ?
Obrigado.
danielbussade
Olá, o que você não está entendendo é o seguinte, o metodo remove da interface collection implementado pela interface list que extends Collection, pede um int, ou um Object, este object que você vai passar ele vai andar na lista invocando o metodo equals da classe que esta na lista, no seu caso ClienteBean, então para funcionar teria que fazer assim:
ClienteBeanA=newClienteBean();A.setCliNome("Eu");ClienteBeanB=newClienteBean();B.setCliNome("Voce");List<ClienteBean>clientes=newArrayList<ClienteBean>();clientes.add(A);clientes.add(B);//Para remover você pode passar a posição como por exemplocliente.remove(1);//Ou o objeto que representa este cliente, que o metodo remove ira comparar usando o equals da classecliente.remove(B);
laelsonc
Tah legal. Vou testar. Obrigadão !
W
WaVe
Pessoal, o meu caso é o seguinte, estou fazendo um pequeno “programa” que insere Empregados em uma ArrayList, vejam o método main:
publicclassTesteEmpregado{publicstaticvoidmain(Stringargs[]){Scanners=newScanner(System.in);System.out.println("Quantos Empregados deseja adicionar? ");intn=s.nextInt();ArrayListlist=newArrayList();cadastrar(list,n);Iteratorit=list.iterator();while(it.hasNext())System.out.println(it.next());}publicstaticvoidcadastrar(ArrayListal,intn){Scanners=newScanner(System.in);for(inti=0;i<n;i++){System.out.println(" --- CADASTRO DE EMPREGADOS --- \n");System.out.println("Digite o NOME do Empregado: ");Stringnome=s.next();System.out.println("Digite o RG do Empregado: ");intrg=s.nextInt();System.out.println("Digite o SALÁRIO do Empregado: ");doublesal=s.nextDouble();System.out.println("Empregado é Gerente? S ou N: ");Stringopt=s.next();if(opt.equalsIgnoreCase("N")){al.add(newEmpregado(nome,rg,sal));}else{System.out.println("Digite o BÔNUS do Gerente: ");doublebonus=s.nextDouble();al.add(newGerente(nome,rg,sal,bonus));}}}
Ok, até aí tudo certo, mas quero também implementar um método excluir e um método editar, mas não sei bem como fazer isso. Alguém pode me dar uma luz? Quais parâmetros os métodos excluir e editar vão receber? Como seria a implementação? Algo bem resumido que me dê uma idéia./