Ich versuche, in der funktionalen Programmierung auf Java zu bekommen 8Java 8 Strom, erhalten Durchschnittsalter von Land
Benutzerklasse
public class User {
private String name;
private Country country;
private int age;
// setters - getters
}
Land Klasse
public class Country {
private String name;
private int population;
//setters - getters
}
Jetzt möchte ich das Durchschnittsalter der Benutzer nach Land, im Grunde eine Map<String, Double>
. Ich kann es auf die alte Art und Weise tun, indem ich einfach die Benutzerliste wiederhole. Allerdings würde ich es gerne in eine functional
Weise implementieren, mit stream
. Ich weiß über collect
und groupingBy
.
Ich versuchte users.stream().collect(Collectors.groupingBy(user -> user.getCountry()));
und erhalten Sie eine Map<String, List<User>>
. Ich kann nicht herausfinden, wie man den Mittelungsteil macht.
einen Blick hier haben https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html#groupingBy- java.util.function.Function-java.util.stream.Collector- – user902383