Nehmen wir an, wir haben eine Liste von Ländern: List<Country>
und jedes Land hat einen Verweis auf eine Liste seiner Regionen: List<Region>
(z. B. Staaten im Falle der USA). Etwas wie das:
In "plain-old" Java können wir alle Regionen zählen, z. auf diese Weise:
%Vor% Ist es möglich, dasselbe Ziel mit Java 8 Stream API zu erreichen? Ich habe über etwas Ähnliches nachgedacht, aber ich weiß nicht, wie man Elemente verschachtelter Listen mit der Methode count()
der Stream-API zählt:
Sie könnten map()
verwenden, um eine Stream
der Regionslisten und dann mapToInt
, um die Anzahl der Regionen für jedes Land zu ermitteln. Danach verwenden Sie sum()
die Summe aller Werte in IntStream
:
Hinweis: Der Vorteil der Verwendung von getRegions
vor dem Filtern besteht darin, dass Sie getRegions
nicht mehr als einmal aufrufen müssen.
Sie können jedes Land der Anzahl der Regionen zuordnen und dann das Ergebnis mithilfe der Summe reduzieren:
%Vor%Tags und Links java java-8 java-stream