说明Java 8收集重载方法

时间:2018-08-07 16:17:16

标签: lambda java-8 java-stream

实际上我是在试图理解collect的重载方法。

<R> R collect(Supplier<R> supplier, 
                  BiConsumer<R, ? super T> accumulator,
                  BiConsumer<R, R> combiner);

我看过Java API的文档,但无法在此方法上建立坚实的概念,我试图将此方法与以下示例相关联,但与最后一个参数(合并器)相混淆。

任何人都可以彻底解释

public Map<String, Choice> getMap1(List<Choice> choices){
            return choices.stream()
                          .collect(HashMap<String, Choice> :: new, 
                                  (m, c) -> m.put(c.getName(), c), 
                                  (m, c) -> {} );
        }

注意::如果我通过null代替组合器,则会出现NullPointerException

如果用示例参考进行解释,那会很好。

0 个答案:

没有答案