[英]Java Streams: Replacing groupingBy and reducing by toMap
通過使用這兩個收集器的經驗,這種模式變得明顯。 您會在 Stackoverflow 上找到幾個問答,其中任一收集器都可以解決問題,但其中一個似乎更適合特定任務。
這是Reduction和Mutable Reduction之間差異的變體。 在第一種情況下,我們在 Stream 上使用reduce
,在第二種情況下我們使用collect
。 當我們想對組應用可變歸約時,很自然地,以第二個Collector
作為參數的groupingBy
收集Collector
是正確的工具。
不是很明顯,當我們想要執行經典的歸約時,采用合並函數的toMap
收集器是正確的工具,因為該合並函數與歸約函數具有相同的形狀和目的,即使它沒有被這樣調用。
在實踐中,我們注意到執行 Reduction 的收集器返回一個Optional
,這在與groupingBy
使用時通常是不需要的,這就是toMap
在這些情況下工作更順暢的原因。
在使用這些 API 時,肯定會有更多模式變得明顯,但將它們收集到一個答案中並不是 Stackoverflow 的范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.