Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

329
Visualizações
¿Cómo reorganizar el orden de ArrayList en Kotlin según la propiedad del objeto?

Tengo la clase ChatMessage como el siguiente código:

 class ChatMessage(val uid: String, val text: String, val fromId: String, val toId: String, val timestamp: Long) {}

tiene timestamp de tiempo como su propiedad

Tengo una lista vacía como esta, luego llenaré esta lista de mensajes con los datos:

 val messageList = ArrayList<ChatMessage>()

y quiero reorganizar esa lista de messageList según la marca de tiempo, por lo que la marca de tiempo más baja estará en el índice 0 de esa matriz.

¿Cómo hacer eso en Kotlin? Lo siento si esto es trivial, soy nuevo en programación y en Kotlin.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Puede usar la función de clasificación de la biblioteca estándar de Kotlin .

Digamos que su lista de messageList debe ordenarse según la marca de tiempo y luego usar la siguiente sintaxis a continuación:

 val sortedList :List<ChatMessage> = messageList.sortedBy { chatMessage :ChatMessage -> chatMessage.timestamp }

El fragmento de código anterior le devolverá List<ChatMessage> , que puede seguir usando.

Obtenga más información aquí .

over 4 years ago · Santiago Trujillo Relatório

0

Puede usar sortedWith con compareBy así:

 val sortedList = messageList.sortedWith(compareBy({ it.timestamp }))

Incluso puede ordenar por múltiples propiedades:

 val sortedList = messageList.sortedWith(compareBy({ it.timestamp }, { it.fromId }))
over 4 years ago · Santiago Trujillo Relatório

0

Bienvenido a Kotlin

1) Puede omitir las llaves para una clase si están vacías, también su ChatMessage parece ser una buena opción para una clase de datos:

 data class ChatMessage(val uid: String, val text: String, val fromId: String, val toId: String, val timestamp: Long)

2) Puede crear un contenedor que use para recopilar todos los mensajes en un PriorityQueue ordenado, especialmente si solo lo necesita ordenado. Esto podría verse así:

 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() } }

Ahora, si inserta objetos de ChatMessage a través de addMessage , se ordenarán en la cola directamente y cuando invoque getAllMessages , recibirá una List<ChatMessage> :

 val container = MessageContainer() repeat(20) { container.addMessage(ChatMessage("text$it", (10L..10_000L).random())) } container.getAllMessages() //will be ordered
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda