collect方法的第三个参数(组合器)如何使用?

时间:2018-11-26 08:27:40

标签: java lambda

我正在学习lambda表达式。 从名单上,我想再列出20岁以上的人。

final List<Person> people = Arrays.asList(
        new Person("John", 10),
        new Person("Greg", 30),
        new Person("Sara", 20),
        new Person("Jane", 15));

 List<Person> olderThan20 =
        people.stream()
       .filter(person -> person.getAge() > 20)
                    .collect(ArrayList::new, 
                             ArrayList::add, 
                             ArrayList::addAll);

我的印象是,ArrayList::newArrayList::add仅前两个参数就足够了。

示例中如何以及何时使用第三个参数ArrayList::addAll

1 个答案:

答案 0 :(得分:1)

此问题的“正确”答案:使用collect(Collectors.toList())。除非必须使用collect()的3 arg版本,否则根本没有意义。有关更多详细信息,请参见here

有关如何使用这3个参数collect(),请开始阅读here