从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)}))
- Kotlin中是否有一个didSet / willSet类似物?
- 房间持久性@Relation在Java中工作,但不在Kolin中
- Kotlin运行时jar vs kotlin stdlib jar
- 序列发生器作为扩展函数调用失败与“接收器类型不匹配”
- 检查我的活动是否在MultiWindowMode或不使用Kotlin
- 如何将一个集合的内容添加到新的集合
- Kotlin数据库错误CursorIndexOutOfBoundsException
- SimpleXML在Thread.getContextClassLoader()返回的类加载器可能失败之后抛出ClassNotFoundException
- Kotlin接口中的伴随对象