Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 如何在kotlin中使用sortedWith()?_Sorting_Kotlin - Fatal编程技术网

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您是对的,我忘了从原始代码中删除它,谢谢!