In Java 7, se voglio ottenere l'ultimo elemento non nullo di una lista, scrivo qualcosa di simile:Ricevi un ultimo elemento non nullo di elenco utilizzando Java 8
public CustomObject getLastObject(List<CustomObject> list) {
for (int index = list.size() - 1; index > 0; index--) {
if (list.get(index) != null) {
return list.get(index);
}
}
// handling of case when all elements are null
// or list is empty
...
}
Voglio scrivere un breve codice utilizzando lambda o un'altra caratteristica di Java 8. per esempio, se voglio ottenere il primo elemento non nullo posso scrivere questo:
public void someMethod(List<CustomObject> list) {
.....
CustomObject object = getFirstObject(list).orElseGet(/*handle this case*/);
.....
}
public Optional<CustomObject> getFirstObject(List<CustomObject> list) {
return list.stream().filter(object -> object != null).findFirst();
}
Forse qualcuno sa come risolvere questo problema?
Non è sempre ** sempre una buona idea usare lambda. Data la risposta di @Tunaki è più chiaro al lettore che usa il modo non-lambda. – lschuetze
Correlati: ["Come ottenere lo streaming ordinato da un elenco in ordine inverso in Java 8"] (http://stackoverflow.com/q/29403614/2711488) e ["Il modo più efficace per ottenere l'ultimo elemento di un flusso "] (Http://stackoverflow.com/q/27547519/2711488) – Holger
@lschuetze, imparo solo le possibilità di lambda e voglio sapere come posso decidere problemi semplici usando le nuove funzionalità – ZhenyaM