Possuo uma lista de Pedidos, que pode possuir pedidos duplicados, por conta de um join com Histórico de pedidos.
List<Pedido> pedidos = new ArrayList<Pedido> ();
Utilizei o seguinte código para remover os pedidos duplicados
public List<Pedido> removeRepetidos(List<Pedido> pedidos, Comparator<Pedido> comparator){
Set<Pedido> t = new TreeSet<Pedido>(comparator);
t.addAll(pedidos);
List<Pedido> pedidosClone = new LinkedList<Pedido> (t);
return pedidosClone;
}
E essa é a chamada e o Comparator que utilizei
pedidos = removeRepetidos(pedidos, new Comparator<Pedido>(){
public int compare(Pedido o1, Pedido o2) {
if (o1.getPedidoPk().getPddCodigo() == o2.getPedidoPk().getPddCodigo())
return 0;
else
return -1;
}
});
Isso funciona, consigo ficar com a lista sem elementos duplicados, mas não resolve meu problema.
Na verdade eu preciso verificar se possuo pedidos duplicados, mas remover o que tiver histórico mais antigo, mantendo o pedido com histórico mais recente.
Cada pedido possui uma lista de Históricos.
Acredito que eu preciso de outro comparator para verificar o histórico, mas não estou com uma ideia muito clara de como fazer isso.
Alguém ajuda?
