TreeSet e Comparator
Caros,
Estou com problemas ao usar um TreeSet com um comparador externo.
O objetivo é não repetir o código de um mesmo produto e ordenar o set pelo valor do produto.
Porém eu tenho como saída dois produtos com o mesmo código, no caso o produto de código 4, já o produto de código 2 só tem 1.
O que está errado?
Segue o código:
Classe Produto
public class Produto {
private int codigo;
private String descricao;
private double valor;
.....
@Override
public String toString() {
return "Produto{" + "codigo=" + codigo + ", descricao=" + descricao + ", valor=" + valor + '}';
}
}
Classe Comparador de Produto:
public class ComparadorProdutoValor implements Comparator<Produto>{
@Override
public int compare(Produto o1, Produto o2) {
if(o1.getCodigo() == o2.getCodigo()){
return 0;
}
else
if(o1.getValor() > o2.getValor()){
return 1;
}
else{
return -1;
}
}
}
Classe Teste:
public class Teste {
public static void main(String[] args) {
TreeSet <Produto> ts = new TreeSet(new ComparadorProdutoValor());
ts.add(new Produto(4,"AAA",200));
ts.add(new Produto(5,"BBB",300));
ts.add(new Produto(2,"DDD",500));
ts.add(new Produto(2,"FFF",700));
ts.add(new Produto(4,"EEE",600));
for(Produto p : ts)
System.out.println(p);
}
}
Saida:
Produto{codigo=4, descricao=AAA, valor=200.0}
Produto{codigo=5, descricao=BBB, valor=300.0}
Produto{codigo=2, descricao=DDD, valor=500.0}
Produto{codigo=4, descricao=EEE, valor=600.0}
Discussão (4)
Carregando comentários...