Java Stream API - zählt Elemente einer verschachtelten Liste

8

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:

%Vor%

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:

%Vor%     
dominik 24.10.2015, 11:51
quelle

3 Antworten

17

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 :

%Vor%

Hinweis: Der Vorteil der Verwendung von getRegions vor dem Filtern besteht darin, dass Sie getRegions nicht mehr als einmal aufrufen müssen.

    
fabian 24.10.2015, 11:57
quelle
4

Sie können jedes Land der Anzahl der Regionen zuordnen und dann das Ergebnis mithilfe der Summe reduzieren:

%Vor%     
Vasily Liaskovsky 24.10.2015 12:03
quelle
0

Sie könnten sogar flatMap() like:

verwenden %Vor%     
Ram Patra 17.02.2017 12:54
quelle

Tags und Links