Decir que tengo un objeto:
public class MyObject {
private LocalDate date;
}
En una lista de estos objetos Es entonces bastante fácil de encontrar el objeto con la fecha más reciente:
MyObject newest = Collections.max(myObjectList, Comparator.comparing(MyObject::getDate));
¿Hay una manera concisa de manera similar a encontrar el objeto con la fecha más reciente, cuando la fecha es una cadena en lugar? Necesito convertir las fechas a LocalDates primera, pero no puedo hacer algo como esto:
MyObject newest = Collections.max(myObjectList, Comparator.comparing(LocalDate.parse(MyObject::getDate)));
Suponiendo que las MyObject::getDate
declaraciones de un formato que sea aceptable para LocalDate.parse
, usted es casi correcta. Sólo tiene que escribir una expresión lambda:
Comparator.comparing(o -> LocalDate.parse(o.getDate()))
comparing
toma una Function<MyObject, T>
. Se supone que para darle un método que toma una MyObject
y devuelve algo (que se extiende Comparable
) para que pueda comparar.
Más información sobre lambdas aquí .