es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Devuelve solo los elementos con el número máximo de ocurrencias

Digamos que tenemos la siguiente estructura en Kotlin, por ejemplo:

val allExams = setOf("A", "B", "C", "D", "E", "F")
val examMap = mutableMapOf<string,></string,><string>>()
examMap["1"] = setOf("A", "B")
examMap["2"] = setOf("A", "B", "C")
examMap["3"] = setOf("A", "B", "C", "D")
examMap["4"] = setOf("E")
examMap["5"] = setOf("F")

¿Cómo puedo filtrar para mantener en el mapa solo los elementos que coincidan con el número máximo de elementos?

En el ejemplo mencionado, quiero eliminar examMap["1"] y examMap["2"] porque en examMap["3"] tengo “A”, “B”, “C” y “D” (que es el elemento con el número máximo de elementos coincidentes de allExams). examMap["4"] y examMap["5"] deben mantenerse porque son los únicos elementos en el mapa que tienen estos valores.

Entonces, al final quiero tener el mapa con los siguientes valores:

kotlin
examMap["3"] = setOf("A", "B", "C", "D")
examMap["4"] = setOf("E")
examMap["5"] = setOf("F")

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para filtrar el mapa y mantener solo los elementos con la máxima cantidad de elementos coincidentes, puedes usar las funciones filter y maxByOrNull. Aquí tienes el código para lograr esto:

    val maxMatchingItems = allExams.size // máxima cantidad de elementos coincidentes
    
    val filteredMap = examMap.filter { entry ->
        entry.value.size == maxMatchingItems // filtrar por número de elementos coincidentes
    }
    
    val result = filteredMap.maxByOrNull { entry ->
        entry.value.size // obtener la máxima cantidad de elementos coincidentes
    }
    

    En este código, maxMatchingItems es la máxima cantidad de elementos que se pueden coincidir de allExams. La variable filteredMap contiene solo las entradas de examMap que tienen la misma cantidad de elementos coincidentes que maxMatchingItems. Finalmente, la variable result contiene la entrada de filteredMap con la máxima cantidad de elementos coincidentes.

Comments are closed.