【发布时间】:2022-01-25 18:01:10
【问题描述】:
所以我正在研究 Java Streams,我对某些参数的顺序的含义有一些疑问。
一些上下文:
public static List<Person> createPeople() {
return List.of(new Person("Sara", 20),
new Person("Sara", 22),
new Person("Bob", 20),
new Person("Paula",32),
new Person("Paul", 32),
new Person("Jack", 3),
new Person("Jack", 72),
new Person("Jill", 11));
}
List<Person> people = Section.createPeople();
考虑以下代码:
Map<String, Integer> countByName3 = people.stream()
.collect(groupingBy(Person::getName,
collectingAndThen(counting(), Long::intValue)));
这段代码的重点是输出一个键值对,其中键是人名,值是具有该特定名称的人数。
现在我的理解是,collect 方法将由 Collectors 类中的函数(例如 groupingBy)生成的 Collector 对象作为其参数。
我也明白其中一些方法的参数中有一个函数。让我感兴趣的是函数和收集器的顺序在生成收集器对象的方法中所起的作用。
例如,groupingBy() 按顺序(函数、收集器)获取参数,而 collectAndThen() 按顺序(收集器、函数)获取参数。如果我没记错的话,两者都会返回 Collectors。
因此,颠倒顺序的含义是什么,它是否表明某些事物是如何在幕后处理的?如果命令背后有不同/含义,我可以得到解释吗?
非常感谢。
【问题讨论】:
标签: java java-stream