Lo puedes hacer más fácil con un sólo for y un hasmap. Así es más eficinte y más rápido. En el HashMap metes los que ya has procesado y así no lo vuelves a meter en la lista.
HashMap<String> yaProcesado= new HashMap<String>();
List<CambioPrecios> listaFinal = new ArrayList<CambioPrecios>();
for (Cambioprecios un_cambio : cambios) {
if (yaProcesado.get(un_cambio.getProducto().getPrNombre())==null){
listaFinal.add(un_cambio);
yaProcesado.put(un_cambio.getProducto().getPrNombre());
}
return listaFinal;
Hola, estoy pegado en un problema para JSF, resulta que tengo una lista de objetos(CambioPrecios) que contiene 3 filas con estos datos:
ID PRODUCTO FECHA CAMBIO PRECIO
1- HARINA 2014-10-17 500
2- HARINA 2014-10-01 300
3- SAL 2014-10-22 400
la consulta que realice me los ordena por fecha así que siempre estará arriba la del ultimo cambio realizado, lo que tengo que hacer es recorrer esa lista y que solo me queden los productos con su ultimo cambio de precio, es ente caso debería mostrar:
ID PRODUCTO FECHA CAMBIO PRECIO
1- HARINA 2014-10-17 500
3- SAL 2014-10-22 400
he intentado con lo siguiente:
cree otra lista de cambios llamada filtro y estaba comparando los objetos por su nombre de producto:
for (Cambioprecios un_cambio : cambios) {
for (Cambioprecios un_filtro : filtro) {
if(un_filtro.getProducto().getPrNombre().equalsIgn oreCase(un_cambio.getProducto().getPrNombre()) == false) {
filtro.add(un_cambio);
}
}
return filtro;
}
espero alguien me ayude.
saludos y gracias