从Kotlin的地图获取最大值的条目

我无法理解如何从Map接口使用maxBymaxWith方法。 我有这个代码:

 var myMap: Map<String, Int> = mutableMapOf() // ... var best = myMap.maxBy { ??? } 

我想获得最大值的条目,但我不知道要传递给maxBymaxWith

MaxBy

MaxBy将这些值转换为可比较的类型,并通过计算得出的值进行比较

MaxWith

MaxWith将这些项目相互比较,并通过比较器的返回值对它们进行排序。

哪一个使用

MaxBy通常更有意义,因为它通常更快(虽然YMMV),并且因为实现可以更简单,但是如果项目只能通过比较来排序,那么可能需要maxWith。

如何使用它

这会得到最高的输入值:

 var maxBy = myMap.maxBy { it.value } 

与maxWith相同的代码将如下所示:

 val maxWith = myMap.maxWith(Comparator({a, b -> a.value.compareTo(b.value)}))