Consideriamo una classe Parent
che contiene solo un attributo Integer
. Ho creato 6 oggetti di classe genitore e i valori di attributo sono 100, 20, 300, 400, 500, null
.Gestione di un attributo null utilizzando java 8 stream e ordinamento utilizzando espressioni lambda
Ora ho aggiunto tutti gli oggetti a un elenco (il nome dell'elenco è l'elenco). Quindi voglio ottenere gli oggetti il cui valore attributo è maggiore di 100
. Ho usato Java 8 stream per questo scopo.
Predicate<Entity> predicate = e -> e.getParentId() < 100;
result = list.stream().filter(predicate).collect(Collectors.toList());
Voglio anche ordinare l'elenco in ordine decrescente. Ho usato il seguente codice per questo scopo.
Comparator<Entity> comp = (d1,d2) -> d2.getId().compareTo(d1.getId());
list.sort(comp);
In entrambi i casi ottengo uno NullPointerException
.
Come gestirlo?
possibile duplicato di [Come dovremmo gestire jdk8 stream per valori nulli] (http://stackoverflow.com/questions/17081063/how-should-we-manage-jdk8-stream-for-null-values) – alfasin
I 'non chiaro ... è 'e' che è' null', o 'e.getParentId()'? Se 'e.getParentId()' è dichiarato come 'Integer' (il tipo in scatola), potrebbe essere nullo. Ma poi quando viene convertito in un 'int' per confrontarlo a 100, il risultato sarà un' NullPointerException' se è 'null'. – ajb