【问题标题】:RxJava Android List to List of Lists using GroupBy使用 GroupBy 的 RxJava Android 列表到列表列表
【发布时间】:2019-08-18 13:19:42
【问题描述】:

我有一个数据类报告

data class Report(var id: Int? = null, var user_name: String? = null)

我有一份报告清单。例如:

val reports = listOf(
Report(1, "Mike"),
Report(2, "John"),
Report(3, "Ann"),
Report(4, "Mike"),
Report(5, "Bob"),
Report(6, "Carl"),
Report(7, "Donald"),
Report(8, "John"),
Report(9, "Ann"),
Report(10, "Bob"))

如何将此报告列表转换为List<List<Reports>>,这将被用户名使用 RxJava 摸索? id 需要的最终变体是这样的:

val reports_grouped_by_user_name = listOf(
listOf(Report(1, "Mike"),Report(4, "Mike")),
listOf(Report(2, "John"),Report(8, "John")),
listOf(Report(3, "Ann"),Report(9, "Ann")),
listOf(Report(5, "Bob"),Report(10, "Bob")),
listOf(Report(6, "Carl")),
listOf(Report(7, "Donald")),
listOf(Report(10, "Bob")))

【问题讨论】:

    标签: android kotlin group-by rx-java


    【解决方案1】:

    您不需要为此使用 RxJava。 Kotlin 就足够了:

    val grouped_map = reports.groupBy { it.user_name }
    //{Mike=[Report(id=1, user_name=Mike), Report(id=4, user_name=Mike)], John=[Report(id=2, user_name=John), Report(id=8, user_name=John)], Ann=[Report(id=3, user_name=Ann), Report(id=9, user_name=Ann)], Bob=[Report(id=5, user_name=Bob), Report(id=10, user_name=Bob)], Carl=[Report(id=6, user_name=Carl)], Donald=[Report(id=7, user_name=Donald)]}
    
    val reports_grouped_by_user_name = reports.groupBy { it.user_name }.values
    //[[Report(id=1, user_name=Mike), Report(id=4, user_name=Mike)], [Report(id=2, user_name=John), Report(id=8, user_name=John)], [Report(id=3, user_name=Ann), Report(id=9, user_name=Ann)], [Report(id=5, user_name=Bob), Report(id=10, user_name=Bob)], [Report(id=6, user_name=Carl)], [Report(id=7, user_name=Donald)]]
    

    【讨论】:

    • Kotlins 黑魔法)正是我需要的一行代码!谢谢!)
    猜你喜欢
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多