我不明白如何从Map界面使用maxBy
和maxWith
方法。我有以下代码:
var myMap: Map<String, Int> = mutableMapOf()
// ...
var best = myMap.maxBy { ??? }
我想获取具有最大值的条目,但我不知道该如何传递给
maxBy
或maxWith
。 最佳答案
麦克斯
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/