gpt4 book ai didi

java - 如何确定流中各种函数的输入值

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:46:42 25 4
gpt4 key购买 nike

这个问题对于 Java 8 集合来说是一个非常原始的问题。

我如何才能更好地理解 Java 8 如何在流处理的各个阶段之间传递输入值。如果有文档清楚地解释这一点,我很乐意通读,但我找不到任何文档。

例如,groupingBy 接受一个名为classifier 的Function,它接受T 类型并转换为K 类型。

static <T,K> Collector<T,?,Map<K,List<T>>> 
groupingBy(Function<? super T,? extends K> classifier)

在下面的示例中,我们仅传递类型 K。不清楚在流中何时会自动考虑输入值(类型 T)?我怎样才能更好地理解这一点?

Map<BlogPostType, List<BlogPost>> postsPerType = posts.stream()
.collect(groupingBy(BlogPost::getType));

最佳答案

In the below example, we are passing on only type K. It is not clear when in streams the input values (Type T) will be automatically considered?

Map<BlogPostType, List<BlogPost>> postsPerType = posts.stream()
.collect(Collectors.groupingBy(BlogPost::getType));

注意代码中的方法引用,相当于函数式接口(interface) Function<T,R> 用唯一的方法apply表示为 getType()方法来自 BlogPost在您的代码中。

How can I understand this better?

更好地理解代码的方法之一是重写简化的代码:

Function<? super BlogPost, ? extends BlogPostType> classifier = BlogPost::getType;
// ^^^__you can see the correlation with Collectors#groupingBy(classifier)

Map<BlogPostType, List<BlogPost>> postsPerType = posts.stream()
.collect(Collectors.groupingBy(classifier));

groupingBy 的返回类型是 Collector<BlogPost, ?, Map<BlogPostType, List<BlogPOst>>> 您可以进一步收集 postPerType 多亏了 Stream 的 collect 实现,它具有签名 <R, A> R collect(Collector<? super T, A, R > collector) .

关于java - 如何确定流中各种函数的输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52389079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com