2017-05-24 8 views
-1

私はKotlinを初めて使い、クエリを要約しようとしています。 私はMap<Int, List<Objects>>にInt:Monthを、List<Objects>にその月のすべてのオペレーションプロセスを持っています。kotlinコレクションは元のマップから新しいマップに変換されます

私が今しようとしているのは、Map<Int, Long>を取得することです。これは、Long:すべての操作のcount()です。

私は既にマップ、mapValues、fold ...を通過しましたが、正しい答えを得ることなく。あなたが開始すると仮定すると、

+0

あなたが望むのはまさに 'mapValues'ですか?確かにそれは単なる値の代わりに 'Entry'を与えますが、それは理想より長く呼び出すメソッドが1つだけです。 –

+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 

は、コレクションのサイズがIntないLongあるので、結果はMap<Int, Int>であることに注意してください。

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

をしかしLongInt値を格納する理由はありません。本当に必要な場合Longを持っています。

+0

ok、愚かな私...私はちょうどそれを入れなかった。mapValueの中の値。ありがとう! – Nacho

関連する問題