Remover alguns itens em um arraylist

3 respostas
M

Prezados,

Solicito a ajuda de vocês para resolver o seguinte problema:

Tenho uma classe Dados, que possui alguns atributos, todos do tipo double.

A partir de algumas informações fornecidas pelo usuário, crio uma ArrayList teste = new ArrayList();
que poderá ter, por exemplo os seguintes valores preenchidos:
teste[0].valor1 -> 1.5
teste[0].valor2 -> 2.3
teste[0].valor3 -> 4.5

teste[1].valor1 -> 2.0
teste[1].valor2 -> 2.5
teste[1].valor3 -> 4.5

O problema é percorrer o ArrayList, onde devo comparar: if ((teste[0].valor3 = teste[1].valor3) && (teste[0].valor2 < teste[1].valor2)) { remove teste[0] }

ou seja, comparo o valor de um dos campo entre o registro atual e o seguinte do arraylist
Se forem iguais remover o que tiver o menor valor no outro campo.

Tentei implementar utilizando o Iterator, mas não consegui fazê-lo, pois não consegui fazer essa comparação entre um elemento e o seguinte.

Qualquer ajuda será bem recebida!

Grato.

3 Respostas

M

Esqueci de mencionar que o ArrayList já esta ordenado por este campo valor3.

jximenes

Se o problema for … os elementos duplicados… da uma lida sobre o HashSet…

flw

M

jximenes,

vlw pela dica, mas pelo o que entendi do HashSet ele elimina os elementos duplicados, a medida que vai inserindo os objetos, verificando se já não existe algum com o mesmo valor.

No meu caso, não consegui pensar na utilização do HashSet para resolver o problema.

Utilizei o ArrayList, pela possibilidade de implementar a ordenação a partir de um dos atributos do meu Objeto.

Então, o que tenho é um ArrayList, ordenado em crescente, onde quero comparar se o atributo valor3 de dois objetos é igual, caso sim, remover o objeto que tiver o menor valor em outro atributo, no caso o valor2.

Outro detalhe é que não tenho como prever quantas repetições poderão existir neste atributo (valor3), mas independente disso, ao final do processo, não devem existir valores repetidos neste atributo, permanecendo aquele que tenha o maior valor no atributo valor2.

Criado 4 de fevereiro de 2013
Ultima resposta 4 de fev. de 2013
Respostas 3
Participantes 2