android - 排序嵌套列表对象

标签 android sorting kotlin

我是Kotlin的新手,我有以下任务。我有一个包含字段的对象列表(专辑)和一个包含另一个对象(歌曲)的列表。我需要对专辑和歌曲列表及其属性进行排序。到目前为止我尝试过的

albumList.onEach { it.songs.sortedByDescending { song -> song.isFavorite} 
.sortedByDescending { it.createDate }

结果,专辑列表是按其createDate属性排序的,而歌曲列表则不是。有什么我想念的吗?谢谢

最佳答案

我发现了一些“肮脏”的解决方案。我对此不太满意,但是可以。

val newList: List<Album> = albumList
    // Sort albums
    .sortedWith(compareBy { it.createDate })
    // Sort songs inside each of albums
    .map { album ->
        album.apply {
            // Assign NEW list
            songs = album.songs.sortedWith(compareBy { it.isFavorite })
        }
    }

这个怎么运作:

1)按创建日期排序相册createDate
2)对于每个专辑:
  • 获取所有songs
  • 将它们映射到自身,但仅通过songs排序(将已排序的songs分配给songs字段,因此它必须是var而不是val)
  • 关于android - 排序嵌套列表对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61067390/

    相关文章:

    Android如何制作像倒计时时钟一样的日历?

    C - 在插入时对链表进行排序

    mongodb 聚合查询排序结果并显示日期名称

    android - DELETE 调用返回 415 Unsupported Media Type

    android - 在 ANE 中调度事件

    具有自定义背景的 android textInputEditText 无法正常工作

    javascript - 按属性值对对象数组进行排序

    kotlin - 为什么更高范围的产品对 kotlin 的回答结果为 0?

    android - android espresso 测试时如何解决这个 CalledFromWrongThreadException?

    android - 如何从 Android 设备打印照片或文档?