我不明白如何从Map界面使用maxBymaxWith方法。我有以下代码:

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

我想获取具有最大值的条目,但我不知道该如何传递给maxBymaxWith

最佳答案

麦克斯

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

MaxWith

MaxWith将各项相互比较,并按比较器的返回值对它们进行排序。

使用哪一个

MaxBy通常更有意义,因为它通常更快(尽管使用YMMV),并且实现可能更简单,但是如果只能通过比较对项目进行排序,则可能需要使用maxWith。

如何使用它

这将获得最高值(value)的条目:

var maxBy = myMap.maxBy { it.value }

与maxWith相同的代码如下所示:
val maxWith = myMap.maxWith(Comparator({a, b -> a.value.compareTo(b.value)}))

关于kotlin - 从Kotlin的Map获取具有最大值的条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47026106/

10-10 18:25
查看更多