我知道我们不能实例化一个接口,但是在做关于Streams
的书的教程时,我感到困惑。当它说接口的方法返回什么时,API是什么意思?
我只是用部分代码来突出显示我不明白的部分。
// count occurences of each word in a Stream<String> sorted by word
Map<String, Long> wordCounts =
Files.lines(Paths.get("Chapter2Paragraph.txt"))
.map(line -> line.replaceAll("(?!')\\p{P}", ""))
.flatMap(line -> pattern.splitAsStream(line))
.collect(Collectors.groupingBy(String::toLowerCase,
TreeMap::new, Collectors.counting()));
对于该方法flatMap
,当在所述API在点击时,它说:
返回由与映射流的内容替换该流中的每个元素的结果的流通过将所提供的映射函数应用于每个元素而产生。每个映射流都将其内容放入此流后关闭。 (如果映射流为空,则使用空流,而不是。)
那么它是什么意思?我有点明白它的作用,但我根本不明白它是如何在幕后工作的。在这种情况下API提到返回时是否返回一个对象,还是这意味着它会替换当前流?此外,使用Streams
时,编译器是否实际创建了这些元素的Object,然后在完成时终止?
此外,从上面的代码,我只是想确保我是正确的。 当你有一个Map<String, Long> wordCounts
变量时,这是否意味着在流终止时,最终结果必须严格遵循类型推断?
你在问这些文档是什么意思,或者它在幕后做了什么?因为这是两个近乎正交的问题。 –
阅读这个问题,我很高兴在移动到Java版本8之前学习了Python生成器。 –
@MadPhysicist我想知道幕后发生了什么,在尝试任何操作之前先学习Python更好其他语言为了更好地理解? – Scorpiorian83