Atualizar um objeto em um List - É assim mesmo?

4 respostas
Marques

Colegas,

Um objeto Produtor possui n enderecos.
Pois bem, quando quero atualizar um desses endereços faço como no bloco abaixo.
Funciona, porém eu gostaria de saber se essa é a melhor forma.

Muito obrigado,

Marques

List<Endereco> enderecos = produtor.getEnderecos();
Endereco endereco = UmaInstanciaDeEnderecoComDadosAtualizados;
			
			for (Endereco end : enderecos) {
				if (end.getId().intValue() == endereco.getId()) {
					enderecos.remove(end);
					enderecos.add(endereco);
				} 
			}

4 Respostas

g4j

Não vejo nada de errado no teu código, mas se quiser, pode sobrescrever os métodos equals e hashCode na classe Endereco para fazer a comparação e tornar o código mais elegante. A comparação ficaria assim:

if (end.equals(endereco))) {
Marques

g4j

Essa parada de sobrescrever os metodos equals e hashcode: Vc poderia me dar uma dica do conteudo desses metodos?

Tks,

Marques

B

Pra atualizar um elemento de uma lista, mantendo o local dele, use o método set.

P

Então amigo, o Eclipse possui um gerador de hashcode() e equals(), basta ultilizar o atalho Ctrl+3 com o focus dentro da sua classe Produtor no caso dai digita “gh” e vai ter la a opçao Generate hashcode and equals, so seleciona-la e falar qual(quais) campo(s) que vai diferenciar um objeto do tipo Produtor do outro.
Dai ele gera automatico.
Se no seu caso for só atualizar de uma pesquisada a respeito da interface Set() pois ela implementa essas funcoes de busca e inserçao bem rapido.

Criado 8 de março de 2010
Ultima resposta 8 de mar. de 2010
Respostas 4
Participantes 4