我无法理解如何使用 Map 界面中的maxBy
和maxWith
方法。我有这段代码:
var myMap: Map<String, Int> = mutableMapOf()
// ...
var best = myMap.maxBy { ??? }
我希望获得具有最大价值的条目,但我不知道要传递给maxBy
或maxWith
的内容。
答案 0 :(得分:16)
MaxBy将值转换为可比较的类型,并按计算值
进行比较MaxWith将项目相互比较,并按比较器的返回值对它们进行排序。
MaxBy通常更有意义,因为它通常更快(虽然是YMMV),并且因为实现可以更简单,但如果只能通过比较对项目进行排序,那么可能需要maxWith。
这是最高价值的条目:
var maxBy = myMap.maxBy { it.value }
与maxWith相同的代码如下所示:
val maxWith = myMap.maxWith(Comparator({a, b -> a.value.compareTo(b.value)}))
答案 1 :(得分:1)
创建如下所示的类
data class Student(val name: String, val age: Int)
现在转到Oncreate
val public = listOf(Student("param",29),
Student("nilesh", 19),
Student("rahul", 13),
Student("venkat", 12),
Student("Ram", 22),
Student("Sonam", 18))
现在在创建中使用maxBy
val maxAge=public.maxBy { p-> p.age }
println(maxAge)
println("Student Name: ${maxAge?.name}" )
println("Student Age: ${maxAge?.age}" )
,并且在创建时显示
val minAge = public.minBy { p->p.age }
println(minAge)
println("Student Name: ${minAge?.name}" )
println("Student Age: ${minAge?.age}" )