Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Kotlin中的映射获取最大值的条目_Kotlin - Fatal编程技术网

从Kotlin中的映射获取最大值的条目

从Kotlin中的映射获取最大值的条目,kotlin,Kotlin,我无法理解如何从地图界面使用maxBy和maxWith方法。我有以下代码: var myMap: Map<String, Int> = mutableMapOf() // ... var best = myMap.maxBy { ??? } var myMap:Map=mutableMapOf() // ... var best=myMap.maxBy{???} 我想获取最大值的条目,但我不知道传递给maxBy或maxWithmaxBy的是什么 MaxBy将值转换为可比较的类型,

我无法理解如何从地图界面使用
maxBy
maxWith
方法。我有以下代码:

var myMap: Map<String, Int> = mutableMapOf()
// ...
var best = myMap.maxBy { ??? }
var myMap:Map=mutableMapOf()
// ...
var best=myMap.maxBy{???}
我想获取最大值的条目,但我不知道传递给
maxBy
maxWith

maxBy的是什么 MaxBy将值转换为可比较的类型,并按计算值进行比较

麦克斯韦 MaxWith将这些项相互比较,并根据比较器的返回值对它们进行排序

用哪一个 MaxBy通常更有意义,因为它通常更快(尽管是YMMV),而且实现也更简单,但是如果只能通过比较来排序项目,那么可能需要maxWith

如何使用它 这将获取最高值的条目:

var maxBy = myMap.maxBy { it.value }
maxWith的相同代码如下所示:

val maxWith = myMap.maxWith(Comparator({a, b -> a.value.compareTo(b.value)}))

创建一个如下所示的类

 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}" )
在Create中为minBy创建

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}" )

在出现平局的情况下,MaxBy的行为是什么?MaxBy已被弃用,更新示例以使用maxByOrNull是有意义的。如果kotlin的新手好奇为什么可以使用不带括号()的MaxBy函数,原因是当唯一的函数参数为lambda时,这对于MaxBy函数是正确的,然后你可以省略括号,直接用大括号代替