我有一些流处理代码,它接受一个单词流并对它们执行一些操作,然后将它们简化为一个映射
,其中包含单词作为键,单词的出现次数作为long
值。为了代码的简洁性,我使用了jOOL库的seq
类,其中包含许多有用的快捷方法。
item.setWordIndex (
getWords (item) // returns a Seq<String>
.map (this::removePunctuation) // String -> String
.map (stemmer::stem) // String -> String
.groupBy(str -> str, Collectors.counting ()));
类型MyClass
中的方法setwordindex(map
不适用于参数(map
type函数
未定义此处适用的标识(String)
为什么function::identity
的行为与str->str
有任何不同,我(也许是天真地)认为它是直接等效的,为什么编译器在使用它时不能处理它?
(是的,我知道我可以通过将以前的map
应用程序移到groupby
操作中来删除标识函数,但我发现这样的代码更清晰,因为它更直接地遵循应用程序逻辑)
您需要function.identity()
(它返回函数
),而不是function::identity
(它匹配SAM类型供应商
)。
下面的代码编译得很好:
static String removePunctuation(String x) { return x; }
static String stem(String x) { return x; }
// ...
final Map<String, Long> yeah = Seq.of("a", "b", "c")
.map(Test::removePunctuation)
.map(Test::stem)
.groupBy(Function.identity(), Collectors.counting());
预计此函数将无法typeCheck。然而,没有解释发生这种情况的原因。在GHCI中试用时,我得到了以下输出: 为什么会出现这种情况?
在方法或类范围内,下面的行编译(带有警告): 在类作用域中,变量获取其默认值,以下给出未定义引用错误: 这难道不是第一个应该以相同的未定义引用错误结束吗?或者第二行应该编译?或者我错过了什么?
我想了解为什么一段代码不会抛出NullPointerException。 请考虑以下代码: 方法被重复调用,同时以下代码在单独的线程中运行: 只有一个实例。 从不引发NullPointerException。 但是,当方法暂停时,即使暂停0毫秒,也会按预期引发NullPointerException: 我的理解是,在理论上,在检查和调用之间存在竞争条件。在实践中,如果不引入暂停(即从后续方法调用中
(下面是完整的代码)我刚刚交了一个课堂实验,在那里我们必须做一个描述某本书的课堂。我不知道怎么做两件事。1.如果有人为“页面”或“SuggestedMetalPrice”输入的值小于零,则该值必须设置为零。在该代码中,即使值为正,该值也设置为0。在: 如果我将第二个“0”设置为不同的数字,比如说: 那么你输入的“页面”的值将是1。但是如果你输入的值是负数,它不应该只有1吗?我不明白我做错了什么。
我正在尝试插入: 在: 但我不工作... 我试过: 为什么??
因此,下面的代码,从txt文件中取序列号作为参数,在我的计算机上正常工作。每个数字都写在一行上。下面是代码: 但它在CodeEval中不起作用。站点编译器是这么说的: Fontconfig错误:无法加载默认配置文件线程“main”java.awt.HeadLessException:未设置X11显示变量,但此程序执行了需要它的操作。在java.awt.GraphicsEnvironment.Che