我正试图在java 8上进行函数式编程
用户类
public class User {
private String name;
private Country country;
private int age;
// setters - getters
}
Run Code Online (Sandbox Code Playgroud)
国家级
public class Country {
private String name;
private int population;
//setters - getters
}
Run Code Online (Sandbox Code Playgroud)
现在我希望按国家/地区获得用户的平均年龄,基本上是Map<String, Double>.我可以通过迭代用户列表以旧方式完成它.但是我想以某种functional方式实现它stream.我知道collect和groupingBy.
我试过 users.stream().collect(Collectors.groupingBy(user -> user.getCountry()));了Map<String, List<User>>.无法弄清楚如何进行平均部分.
添加第二个参数 groupingBy
Map<String, Double> map = users
.stream()
.collect(Collectors.groupingBy(
user -> user.getCountry().getName(),
Collectors.averagingInt(User::getAge)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |