Kotlin列表EnumMap与总和
我必须把我的项目迁移到Kotlin。 后来我质疑这个问题 。 而且我真的不知道如何在Kotlin中实现它。 我知道'associateBy'函数,但它没有Java 8'groupBy'所具有的那么多的参数。 这是一种使用lambdas实现它的方法吗? 如果没有,我怎么能没有它实现这个算法?
目前,最简单的解决方案是首先使用.groupBy { }
生成分组,然后使用.mapValuesTo() { }
处理组,然后将它们转换为和:
val result = marks .groupBy(Mark::subject) .mapValuesTo(EnumMap(Subject::class.java)) { it.value.sumBy(Mark::value) }
在Kotlin 1.1发布之后, Kotlin 1.1 Beta中显示的新stdlib功能将允许您在没有中间组映射的情况下执行相同的功能。 相反,这个集合只能用这个代码处理一次:
val result = marks .groupingBy(Mark::subject) .foldTo(EnumMap(Subject::class.java), 0) { acc, it -> acc + it.value }
- servlets> 3.1:frontcontrolller:multipart / formData:当尺寸太大时,拒绝特定部件名称的文件
- Spring Data JPA + Guice错误:使用@EnableTransactionManagement注解时,没有类型的主要bean定义
- 在Kotlin&Guice中提供一个通用实例
- 映射,除非例外
- 错误:将字节码转换为dex时出错:原因:未使用默认或静态接口方法–min-sdk-version> = 24
- Kotlin版本1.1.4-eap-77不起作用
- Android Studio 3.0 – 无法找到方法'com.android.build.gradle.internal.variant.BaseVariantData.getOutputs()Ljava / util / List'
- 在kotlin的Math类中添加一个扩展函数
- 如何使Kotlin / JavaScript中的按钮点击监听器事件?
- jackson未能对Kotlin数据类进行反序列化
- 从kotlin的顶层函数获取类的引用