Załóżmy, że mamy listę krajów: List<Country>
, a każdy kraj ma odniesienie do listy regionów: List<Region>
(np. Stany w przypadku USA). Coś takiego:Java Stream API - policz pozycje zagnieżdżonej listy
USA
Alabama
Alaska
Arizona
...
Germany
Baden-Württemberg
Bavaria
Brandenburg
...
W "zwykłej" Jawie możemy liczyć wszystkie regiony, np. w ten sposób:
List<Country> countries = ...
int regionsCount = 0;
for (Country country : countries) {
if (country.getRegions() != null) {
regionsCount += country.getRegions().size();
}
}
Czy można osiągnąć ten sam cel dzięki API Java 8 Stream? Myślałem o czymś podobnym do tego, ale nie wiem jak liczyć elementów zagnieżdżonych list używając count()
metodę strumienia API:
countries.stream().filter(country -> country.getRegions() != null).???
IMHO to @fabian rozwiązanie powinno być korzystne. 'List :: size' to operacja' O (1) 'podczas gdy użycie' flatMap' na każdej liście jest operacją 'O (n)'. – Flown