Es gibt einen Code Schnipsel in meinem Kotlin Code:convert Vergleich Lambda in Kotlin
val dataMap = sensoryDataUsage.groupBy { it }
.mapValues { it.value.count().toDouble()/count }
.mapKeys { println(it.key); it.key.toDouble()/max }
.toSortedMap(object : Comparator<Double> {
override fun compare(p0: Double, p1: Double): Int {
return (p1-p0).compareTo(0)
}
})
Es funktionierte gut. Allerdings halten die IDE was darauf hindeutet, dass ich Vergleicher Objekt zu einem Lambda zu konvertieren, und ich habe genau das:
val dataMap = sensoryDataUsage.groupBy { it }
.mapValues { it.value.count().toDouble()/count }
.mapKeys { println(it.key); it.key.toDouble()/max }
.toSortedMap {x, y -> (y-x).compareTo(0)}
Diese SHOLD Arbeit. Es kann jedoch nicht kompiliert werden:
Error:(32, 14) Kotlin: Type inference failed: fun <K, V> Map<out K, V>.toSortedMap(comparator: Comparator<in K>): SortedMap<K, V> cannot be applied to receiver: Map<Double, Double> arguments: ((Double, Double) -> Int)
Irgendwelche Ideen, was schief gelaufen ist? Danke im Voraus.
Haben Sie es manuell konvertieren oder die Absicht von der IDE zur Verfügung gestellt gelten? – Ilya