Sorting 如何在kotlin中使用sortedWith()?
我正在尝试按“创建”对简单的用户列表进行排序。我做错了什么Sorting 如何在kotlin中使用sortedWith()?,sorting,kotlin,Sorting,Kotlin,我正在尝试按“创建”对简单的用户列表进行排序。我做错了什么 val user1 = User("2019-01-01 17:42:34") val user2 = User("2019-01-02 17:42:34") val user3 = User("2019-01-03 17:42:34") val list = listOf(user2, user3, user1) list.sortedWith(compareBy { LocalDateTime.parse(
val user1 = User("2019-01-01 17:42:34")
val user2 = User("2019-01-02 17:42:34")
val user3 = User("2019-01-03 17:42:34")
val list = listOf(user2, user3, user1)
list.sortedWith(compareBy {
LocalDateTime.parse(
it.created,
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
)
})
data class User(val created: String = "")
你的代码可以工作。这里的问题是,
sortedWith
返回一个带有排序结果的new列表!检查文档:
返回根据指定的[comparator]排序的所有元素的列表。
种类稳定。这意味着相等的元素在排序后会保持它们相对彼此的顺序
因此,如果要对集合本身进行排序,则需要使用MutableList
和sortWith
:
val list = mutableListOf(User("2019-01-01 17:42:34"), User("2019-01-02 17:42:34"), User("2019-01-03 17:42:34"))
list.sortWith(compareBy {
LocalDateTime.parse(
it.created,
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
})
sortedWith
函数返回包含已排序元素的新列表,而不修改原始集合。您可能想使用MutableList
的sortWith
函数对原始集合进行排序。编译器怎么说?你在做什么?你预计会发生什么?会发生什么情况呢?作为旁注:您应该向用户
添加日期时间
-属性,并提供适当的字符串
-构造函数。否则,您会在比较中多次解析(相同!)DateTime
(这可能不是您想要的)。您可能不想将单位
(sortWith的结果)分配给结果
@AlexeyRomanov您是对的,我忘了从原始代码中删除它,谢谢!