-1
什麼是最好的表現?groupBy和mapValues或map和地圖
all.groupBy(_.id).mapValues(_.head)
或者
all.map(l => (l.id, l)).toMap
乾杯
什麼是最好的表現?groupBy和mapValues或map和地圖
all.groupBy(_.id).mapValues(_.head)
或者
all.map(l => (l.id, l)).toMap
乾杯
一般來說回答的唯一方法就是對它進行基準測試,並在JVM爲基準,最好的辦法是JMH。
但是,對於這種特定情況,它將強烈依賴於結果的使用模式等等。 mapValues
實際上沒有將該函數應用於值,只有在訪問結果Map
時纔會執行此操作。所以如果例如你只能訪問一次,而不是所有的密鑰,我期望mapValues
更快,而如果你重複訪問相同的密鑰,map
可能會更快。因此,您不應該僅僅在不使用結果的情況下對這些片段進行基準測試。
「[如果你有兩匹馬,並且你想知道兩匹馬哪一匹馬跑得更快,那就馬匹](http://ericlippert.com/2012/12/17/performance-rant/)」。 – dcastro