在上降低甲骨文创新与流提供了如何的人的集合转换成包含基于性别的平均年龄地图的例子。它使用以下Person类和代码:
public class Person {
private int age;
public enum Sex {
MALE,
FEMALE
}
private Sex sex;
public Person (int age, Sex sex) {
this.age = age;
this.sex = sex;
}
public int getAge() { return this.age; }
public Sex getSex() { return this.sex; }
}
Map<Person.Sex, Double> averageAgeByGender = roster
.stream()
.collect(
Collectors.groupingBy(
Person::getSex,
Collectors.averagingInt(Person::getAge)));
上面的流代码效果很好,但我想看看如何在使用收集器的自定义实现时执行相同的操作。我在 Stack Overflow 或网络上都找不到有关如何执行此操作的完整示例。至于我们为什么要这样做,作为一个例子,也许我们想要计算某种涉及年龄的加权平均值。在这种情况下, 的默认行为是Collectors.averagingInt不够的。
神不在的星期二
相关分类