【问题标题】:How to Filter objects by property from a list - Kotlin如何按属性从列表中过滤对象 - Kotlin
【发布时间】:2020-12-14 07:35:53
【问题描述】:

我有包含重复值的 myObjects 列表。我需要根据最新版本过滤 myObjects,如下图所示。

请在 kotlin(最有帮助)或 java 中分享代码。提前致谢。

【问题讨论】:

  • 不是 Java 和 Kotlin。这是一个或另一个。请不要发帖images of code
  • 它使对象属性名称等代码的屏幕截图更加清晰
  • 你可以说“构造函数接受 3 个参数:名称、代码和版本”。或者更好的是,显示类定义。

标签: list kotlin collections


【解决方案1】:

使用groupingByreduce Kotlin playground

data class MyObject(
    val name: String,
    val code: String,
    val version: Int
)

fun main() {
    val objects = listOf(
        MyObject("Book1", "code_A", 2),
        MyObject("Book1", "code_A", 1),
        MyObject("Book2", "code_B", 3),
        MyObject("Book2", "code_B", 2),
        MyObject("Book2", "code_B", 1),
        MyObject("Book3", "code_C", 1),
    )
    
    val result = objects
        .groupingBy { it.code }
        .reduce { _, a, b -> maxOf(a, b, compareBy { it.version }) }
        .values
    print(result.joinToString(separator = "\n"))
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-08
    • 2020-07-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 2013-07-21
    相关资源
    最近更新 更多