我无法理解如何使用Map接口maxBy和maxWith方法.我有这个代码:
var myMap: Map<String, Int> = mutableMapOf()
// ...
var best = myMap.maxBy { ??? }
Run Code Online (Sandbox Code Playgroud)
我想得到最大值的条目,但我不知道要传递给什么maxBy或maxWith.
jrt*_*ell 19
MaxBy将值转换为可比较的类型,并按计算值进行比较
MaxWith将项目相互比较,并按比较器的返回值对它们进行排序.
MaxBy更有意义一般,因为它通常更快(虽然因人而异),因为实施起来也比较简单,但如果项目只能通过比较,然后进行排序,可能需要maxWith.
这获得了最高价值的条目:
var maxBy = myMap.maxBy { it.value }
Run Code Online (Sandbox Code Playgroud)
与maxWith相同的代码如下所示:
val maxWith = myMap.maxWith(Comparator({a, b -> a.value.compareTo(b.value)}))
Run Code Online (Sandbox Code Playgroud)
小智 6
创建一个如下所示的类
data class Student(val name: String, val age: Int)
Run Code Online (Sandbox Code Playgroud)
现在转到 Oncreate
val public = listOf(Student("param",29),
Student("nilesh", 19),
Student("rahul", 13),
Student("venkat", 12),
Student("Ram", 22),
Student("Sonam", 18))
Run Code Online (Sandbox Code Playgroud)
现在创建中的 maxBy
val maxAge=public.maxBy { p-> p.age }
println(maxAge)
println("Student Name: ${maxAge?.name}" )
println("Student Age: ${maxAge?.age}" )
Run Code Online (Sandbox Code Playgroud)
以及 Create 中的 minBy
val minAge = public.minBy { p->p.age }
println(minAge)
println("Student Name: ${minAge?.name}" )
println("Student Age: ${minAge?.age}" )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5806 次 |
| 最近记录: |