Lista sem duplicidade

7 respostas
W

Galera estou fazendo um ArrayList e ele esta vindo com dados duplicados, como faço para o list não duplicar dados?

Grato
wesley oliveira

7 Respostas

R

coloca o código para que possamos ver o que você esta fazendo

Marky.Vasconcelos

Talvez seja o caso de usar um Set que não permite dados duplicados.

W
segue o código:

[public HashSet getListCapaBuscar(String criterio, String tipos, String caracteristicas,Integer min, Integer max) throws Exception {

String[] palavras = criterio.split(";");

HashSet hs = new HashSet();

TemasVO temasvo = new TemasVO();

try{
for (int i = 0; i < palavras.length; i++) {
			String string = palavras[i];
			//List<TemasVO> results = new ArrayList();
			rs = stm.executeQuery("SELECT * FROM comercial.view_capa_album_temas WHERE (descricao like '%" + string + "%') and (idvalor Between %"+ min +"% And %"+ max +"% )" +
					  																	"and (tipos like '%" + tipos + "%') and (caracteristicas like '%" + caracteristicas + "%') order by temas");
			while(rs.next()) {
				
				temasvo.setTemas(rs.getString("temas"));
				temasvo.setDescricao(rs.getString("descricao"));
				temasvo.setFaixapreco(rs.getString("faixapreco"));
				temasvo.setImagem_local(rs.getString("imagem_local"));
				temasvo.setTipos(rs.getString("tipos"));
				temasvo.setCaracteristicas(rs.getString("caracteristicas"));
				temasvo.setBriefing(rs.getString("briefing"));
				temasvo.setIdvalor(rs.getString("idvalor"));
				temasvo.setStatus(rs.getString("status"));  
				hs.add(temasvo);
			}
		}
		
	}catch(SQLException e){
		e.printStackTrace();
	}
	
	return hs;
}]
natureza

Falou tudo !

W

Poderiam passar uma extrutura com o Set?
Como vcs podem ver estou iniciando em java.

grato
wesley oliveira

lina

Oi,

Se você não precisa de uma Chave/Valor, você poderá utilizar um LinkedHashSet:

LinkedHashSet
lo_hash_set	=	new LinkedHashSet();
lo_hash_set.add("001");
lo_hash_set.add("001");
lo_hash_set.add("002");
lo_hash_set.add("003");
lo_hash_set.add("005");
lo_hash_set.add("003");
     		
for (int i = 0; i < lo_hash_set.size(); i++) {
     System.out.println(lo_hash_set.toArray()[i]);
}
Saida:
001
002
003
005

Tchauzin!

Marky.Vasconcelos

List

List<Cliente> list = new ArrayList<Cliente>();
list.add(clienteQualquer);
list.add(clienteQualquer);
list.add(outroCliente);
list.add(outroCliente);

Nesse caso temos 4 objetos dentro do list.

Set

Set<Cliente> set = new HashSet<Cliente>();
set.add(clienteQualquer);
set.add(clienteQualquer);
set.add(outroCliente);
set.add(outroCliente);

Nesse caso temos apenas 2.

A diferença é que não existe um método get(int idx) no Set. Voce precisa iterar sobre a coleção.

Mas se voce usa um for-each o código continua funcinando pois Set também implementa Iterable.

Ou usa a solução da Lina que postou enquanto eu escrevia isso.

Criado 27 de janeiro de 2010
Ultima resposta 28 de jan. de 2010
Respostas 7
Participantes 5