我知道我們不能實例化一個接口,但是在做關於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