我对流图法有点困惑。有一些简单的源代码可以运行:
public static void main(String[] args) {
List<String> words = Arrays.asList("hello", "world", "I", "love", "you");
words.stream().map(String::length).forEach(System.out::println);
}
map()签名:Stream map(函数
在我的选择中,我认为赋予文字的功能。stream()。map应该有1个参数,但是string::length没有任何输入参数,只返回int。
它看起来像word流调用字符串中的每个元素“word”。长度(),但我不知道该怎么做?为什么string::length签名不需要与函数签名(R apply(T))匹配?
非常感谢!
Stream#map
的工作是将一些代码应用于流内容中的每个元素,并收集该代码的输出以用作新流中的元素。
map
方法将lambda或方法引用应用于流中的每个元素。您将方法引用String::length
传递给了map
方法调用。因此,第一个流询问每个“单词”字符串的长度。每个长度数字都成为一个新的数字流中的一个元素。
您对foreach
的调用作用于新的第二个数字流的元素。
你说:
它看起来像words stream invokeString中的每个元素“word”。length()
,但我不知道该怎么做?
这就是Stream#map
方法所做的工作:对流的每个元素应用String#length
方法。每个长度的结果都会在代码中输入一个新的数字流。
你说:
我认为语言的功能。stream()。map应该有1个参数,但是string::length没有任何输入参数,只返回int。
长度是String
类中的一个方法,因此每个String
对象都携带该方法。
您有一个String
对象的流。Stream#map方法将您的方法引用应用于它的每个元素。因此map
在您的流的每个String
对象(每个单词)上调用长度
。
我有以下Haskell表达式: 而我也有下面的表达: 我正试图弄清楚上面是否等同于第一个表达式。然而,当我在GHCI中尝试上面的表达式时,我得到了一个错误: 我不知道为什么这个表达不起作用。既然使用了函数组合,那么表达式的计算值不应该是:
我正在结合Lombok和构建器模式使用MapSTRt。我有一个问题,即MapSTRt正在对生成的映射器函数中的所有参数进行显式空检查,并在所有参数为空的情况下提前退出,例如: 我想实现MapStruct不实现完整的空检查。即使所有参数都为null,它也应该设置整个生成器,并在生成器进行null检查(如果有)时调用build。
我目前正在阅读一本Java8Lambdas的书(相当受欢迎),我对其中一个高级问题的答案中的一些语法感到困惑。 问题提出如下问题: 只使用reduce和lambda表达式编写函数'map'的实现。您可以返回而不是。 到目前为止,Java8 lambdas已经非常简单了,我觉得我似乎理解了书中的所有理论,但也许我误解了什么?我想知道我在这里错过了什么?
流接口中的映射函数定义如下: 函数参数列表与函数接口自己的规范一致 方法是 这意味着它需要一个T,但返回一个R。但我正在运行这个代码 奇怪的是,为什么它能工作,但论点类型似乎不匹配?没有简单的方法来解释它,但我的理解是,一个函数应该接受类型T的输入并返回类型R。当它在流中使用时,它接受类型String的输入并返回类型int(即String.length())。但是小溪。map被键入以返回与流相同的
我试图收集一个列表的结果,并将它们组织成一个地图,其中的值是一个地图: 我得到错误,因为对于列表中的不同值是相同的。 映射中包含的值应为: 当我尝试会删除其中一个条目
RDD转换和操作只能由驱动程序调用,不能在其他转换内部调用;例如,rdd1。地图(x)= 正如错误所说,我试图在主映射函数中映射(转换)一个JavaRDD对象,ApacheSpark怎么可能呢? 主要JavaPairRDD对象(TextFile和Word是定义的类): 和地图功能: 我还尝试了foreach映射函数,但不起作用。(当然还有SPARK-5063)