2017-05-24 28 views
-1

我是Kotlin的新手,我試圖總結一個查詢。 我有一個Map<Int, List<Objects>> Int:Month和List<Objects>該月的所有操作過程。kotlin集合將地圖轉換爲新的地圖,其值從原始計算

我現在要做的是得到一個Map<Int, Long>其中Long:所有操作的count()。

我已經通過map,mapValues,fold ...但沒有得到正確的答案。

+0

是不是'mapValues'正是你想要的?果然,它給你'Entry'而不僅僅是價值,但這只是一種方法調用比理想更長的時間。 –

+0

您應該顯示您嘗試過的代碼以及爲什麼失敗,因爲您實際上提到了一個工作解決方案,因此您一定幾乎已經在那裏。 –

回答

2

假設你開始:

val monthOfOperations: Map<Int, List<Operation>> 

那麼你可以簡單:

val monthOfOperationCounts = monthOfOperations.mapValues { it.value.size } 
// result: Map<Int, Int> of Month to Count of Operations 

注意結果是Map<Int, Int>因爲收藏規模Int而不是Long。爲了有一個Long如果真的需要:

val monthOfOperationCounts = monthOfOperations.mapValues { it.value.size.toLong() } 
// result: Map<Int, Long> of Month to Count of Operations 

但沒有理由存儲在LongInt值。

+0

好吧,傻我...我只是沒有把它value.value.size裏面mapValue。謝謝! – Nacho