从Kotlin的地图获取最大值的条目
我无法理解如何从Map接口使用maxBy
和maxWith
方法。 我有这个代码:
var myMap: Map<String, Int> = mutableMapOf() // ... var best = myMap.maxBy { ??? }
我想获得最大值的条目,但我不知道要传递给maxBy
或maxWith
。
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)}))