Supponiamo di avere un elenco di paesi: List<Country>
e ogni paese ha un riferimento a un elenco delle sue regioni: List<Region>
(ad esempio, nel caso degli Stati Uniti). Qualcosa del genere:API Java Stream: contare gli elementi di un elenco annidato
USA
Alabama
Alaska
Arizona
...
Germany
Baden-Württemberg
Bavaria
Brandenburg
...
In Java "vecchio-vecchio" possiamo contare tutte le regioni, ad es. in questo modo:
List<Country> countries = ...
int regionsCount = 0;
for (Country country : countries) {
if (country.getRegions() != null) {
regionsCount += country.getRegions().size();
}
}
È possibile raggiungere lo stesso obiettivo con Java 8 Stream API? Ho pensato a qualcosa di simile a questo, ma non so come contare gli elementi di liste annidate utilizzando count()
modalità di flusso API:
countries.stream().filter(country -> country.getRegions() != null).???
IMHO questa soluzione @fabian dovrebbe essere preferito. 'List :: size' è un'operazione' O (1) 'mentre usare un' flatMap' su ogni lista è un'operazione 'O (n)'. – Flown