如何根据对象的属性重新排列 Kotlin 中 ArrayList 的顺序?

Agu*_*ana 3 android kotlin

我有ChatMessage像下面的代码这样的类:

class ChatMessage(val uid: String, val text: String, val fromId: String, val toId: String, val timestamp: Long) {}
Run Code Online (Sandbox Code Playgroud)

它有timestamp作为它的财产

我有一个像这样的空列表,稍后我将用数据填充此 messageList:

val messageList = ArrayList<ChatMessage>()
Run Code Online (Sandbox Code Playgroud)

我想messageList根据时间戳重新排列它,因此最低的时间戳将位于该数组的索引 0 中。

在 Kotlin 中如何做到这一点?如果这是微不足道的,我很抱歉,我是编程和 Kotlin 的新手。

Jee*_*ede 6

您可以使用Kotlin 标准库中的排序功能。

比方说,您messageList需要根据时间戳进行排序,然后使用以下语法:

val sortedList :List<ChatMessage> = messageList.sortedBy { chatMessage :ChatMessage -> chatMessage.timestamp }
Run Code Online (Sandbox Code Playgroud)

上面的代码将返回您排序后的结果,List<ChatMessage>您可以进一步使用它。

在这里了解更多信息。


Bac*_* Vu 5

您可以sortedWithcompareBy这样使用:

val sortedList = messageList.sortedWith(compareBy({ it.timestamp }))
Run Code Online (Sandbox Code Playgroud)

您甚至可以按多个属性排序:

val sortedList = messageList.sortedWith(compareBy({ it.timestamp }, { it.fromId }))
Run Code Online (Sandbox Code Playgroud)