我有一个对象列表:val list = List<Example>data class Example( val date: String, val color: Int, val startTime: String )我想得到列表,其中内部列表按示例排序。我想它需要使用一个按日期排序的map函数,但我不知道怎么做。有什么建议吗
val list = List<Example>
data class Example( val date: String, val color: Int, val startTime: String )
4nkexdtk1#
如果我理解正确的话,您不仅希望按日期排序,而且还希望将具有相同日期的元素分组。假设日期格式是从大到小的逻辑单位,如ISO 8601(yyyy-MM-dd),您可以直接对字符串进行排序,而无需将其解析为日期:
yyyy-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将根据列表的第一个元素的日期(这是所有元素的日期,因为它们是这样分组的)对列表进行排序。
groupBy
Map<String, List<Example>>
Example
.values
sortedBy
1条答案
按热度按时间4nkexdtk1#
如果我理解正确的话,您不仅希望按日期排序,而且还希望将具有相同日期的元素分组。
假设日期格式是从大到小的逻辑单位,如ISO 8601(
yyyy-MM-dd
),您可以直接对字符串进行排序,而无需将其解析为日期:groupBy
将返回一个Map<String, List<Example>>
,其中key是一个日期,每个值是一个包含具有相同日期的Example
的列表。使用.values
,我们只从Map中获取值,因此是一个列表列表。然后,sortedBy
将根据列表的第一个元素的日期(这是所有元素的日期,因为它们是这样分组的)对列表进行排序。