通过对象的字段将列表转换< Object>为列表〈列表< Object>>,Kotlin

ubof19bj  于 2023-05-01  发布在  Kotlin
关注(0)|答案(1)|浏览(138)

我有一个对象列表:
val list = List<Example>
data class Example( val date: String, val color: Int, val startTime: String )
我想得到列表,其中内部列表按示例排序。我想它需要使用一个按日期排序的map函数,但我不知道怎么做。有什么建议吗

4nkexdtk

4nkexdtk1#

如果我理解正确的话,您不仅希望按日期排序,而且还希望将具有相同日期的元素分组。
假设日期格式是从大到小的逻辑单位,如ISO 8601yyyy-MM-dd),您可以直接对字符串进行排序,而无需将其解析为日期:

val list = TODO("provide some List<Example>")
val result = list.groupBy { it.date }.values.sortedBy { it[0].date }

groupBy将返回一个Map<String, List<Example>>,其中key是一个日期,每个值是一个包含具有相同日期的Example的列表。使用.values,我们只从Map中获取值,因此是一个列表列表。然后,sortedBy将根据列表的第一个元素的日期(这是所有元素的日期,因为它们是这样分组的)对列表进行排序。

相关问题