gpt4 book ai didi

java - Java 中的流,无法理解这段代码

转载 作者:太空狗 更新时间:2023-10-29 22:49:17 25 4
gpt4 key购买 nike

我找到了以下代码片段:

Function<Integer, Predicate<Integer>> smallerThan = x -> y -> y < x;
List<Integer> l = Arrays.asList(5, 6, 7, 23, 4, 5645,
6, 1223, 44453, 60182, 2836, 23993, 1);

List<Integer> list2 = l.stream()
.filter(smallerThan.apply(l.get(0)))
.collect(Collectors.toList());

System.out.println(list2);

作为我收到的输出:

[4, 1]

考虑到我们只传递一个参数 smallerThan.apply(l.get(0)),此示例中的 smallerThan 函数如何工作?

最佳答案

smallerThanFunction接受单个 Integer并返回 Predicate<Integer> (Predicate<Integer> 是一个接受单个 Integer 并返回 boolean 的函数)。

smallerThan.apply(l.get(0))返回 Predicate<Integer>看起来像这样:

y -> y < l.get(0)

即它返回 true如果传递给它的输入小于 l.get(0) .

当你通过 Predicatefilter , 你的 Stream管道只保留小于 l.get(0) 的元素.

您的管道可以重写为:

List<Integer> list2 = l.stream()
.filter(y -> y < l.get(0))
.collect(Collectors.toList());

l.get(0)5 ,您的管道返回原始列表中小于 5 的所有元素.

关于java - Java 中的流,无法理解这段代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47495381/

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