java - 如何在kotlin中对多个列表进行元素求和

标签 java android kotlin

我想按项目组的总和按其计数来组合两个项目列表。对象定义:Item (name:String, count:Long}

var list1 : MutableList<Item> = //From API 1 call
var list2 : MutableList<Item>= //From API 2 call

示例:

Item 1: [{"pen",2}, {"pencil", 3}]
Item 2: [{"pen",6}, {"chair", 2}]

输出如下:

Final list: [{"pen",8}, {"pencil", 3},  {"chair", 2}]

如何使用任何集合内置函数在 kotlin 中实现?

最佳答案

您必须使用groupByreduce :

val itemsCount = (list1 + list2)          // concat lists
    .groupBy { it.name }                  // group items by name
    .values                               // take list of values
    .map {                                // for each list
        it.reduce {                       // accumulate counts
            acc, item -> Item(item.name, acc.count + item.count)
        }
    }

关于java - 如何在kotlin中对多个列表进行元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46337751/

相关文章:

java - Jira Rest API 调用适用于本地程序,但不适用于插件

java TCP服务器接受来自android客户端的图像和字符串

java - 如何使用 Rijndael 和 256 位的 block 大小进行加密或解密?

android - Android 和 Iphone 之间的应用感知蓝牙 BLE 通信

android - Corona sdk 应用程序在模拟器上运行良好,但上传到 Droid 时运行不佳

android - 将 Android 实现转移到 Flutter 应用程序

java - 如何使用 LambdaMetaFactory 在运行时创建代理对象?

android - 在 kotlin 中检查互联网连接 android

android - 在 Kotlin Android 中处理多个函数中的可变变量

kotlin - 在单个语句 Kotlin 中列出 clear 和 addAll