2017-05-24 83 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