Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > pequeña ayuda con java :)

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

octubre 22, 2014 | Registered Commenterrengyuk

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;

octubre 24, 2014 | Registered Commenterantuansoft