Добро пожаловать в Kotlin
1) Вы можете опустить фигурные скобки для класса, если они пусты, также ваш ChatMessage
, кажется, подходит для класса данных:
data class ChatMessage(val uid: String, val text: String, val fromId: String, val toId: String, val timestamp: Long)
2) Вы можете создать контейнер, который вы используете для сбора всех сообщений в упорядоченном PriorityQueue
, особенно если вам нужно только упорядочить его.Это может выглядеть так:
class MessageContainer {
private val messageList = PriorityQueue<ChatMessage>(Comparator { c1: ChatMessage, c2: ChatMessage ->
c1.timestamp.compareTo(c2.timestamp)
})
fun addMessage(msg: ChatMessage) = messageList.offer(msg)
fun getAllMessages(): List<ChatMessage> {
val ordered = mutableListOf<ChatMessage>()
while (!messageList.isEmpty()) ordered.add(messageList.remove())
return ordered.toList()
}
}
Теперь, если вы вставляете объекты ChatMessage
через addMessage
, они будут упорядочены непосредственно в очереди, а когда вы вызываете getAllMessages
, вы получите упорядоченный List<ChatMessage>
:
val container = MessageContainer()
repeat(20) {
container.addMessage(ChatMessage("text$it", (10L..10_000L).random()))
}
container.getAllMessages() //will be ordered