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")
davy.ai
Para filtrar el mapa y mantener solo los elementos con la máxima cantidad de elementos coincidentes, puedes usar las funciones
filter
ymaxByOrNull
. Aquí tienes el código para lograr esto:En este código,
maxMatchingItems
es la máxima cantidad de elementos que se pueden coincidir deallExams
. La variablefilteredMap
contiene solo las entradas deexamMap
que tienen la misma cantidad de elementos coincidentes quemaxMatchingItems
. Finalmente, la variableresult
contiene la entrada defilteredMap
con la máxima cantidad de elementos coincidentes.