Kotlin 数组 - sortedBy() 函数



Kotlin 数组的 sortedBy() 函数用于返回一个列表,该列表包含根据指定选择器函数返回的值的自然排序顺序按升序排序的所有元素。

排序是稳定的。这意味着相等元素在排序后彼此之间保持相对顺序。

语法

以下是 Kotlin 数组 sortedBy() 函数的语法:

fun <T, R : Comparable<R>> Array<out T>.sortedBy(
   crossinline selector: (T) -> R?
): List<T>

参数

此函数接受 **selector** 作为参数,它表示一个定义排序标准的函数。

返回值

此函数返回一个包含所有元素的升序排列的列表。

示例 1

以下是一个基本示例,用于演示 sortedBy() 函数的使用:

fun main(args: Array<String>){
   var arr = arrayOf<Int>(2, 4, 5, 6, 1)        
   val list = arr.sortedBy({it})   
   println("Sorted list: $list")
}

输出

以上代码生成以下输出:

Sorted list: [1, 2, 4, 5, 6]

示例 2

现在,我们创建一个字符串数组。然后我们使用 **sortedBy()** 函数根据长度对元素进行排序:

fun main(args: Array<String>){
   var arr = arrayOf<String>("This", "is", "tutorialspoint", "India")
        
   val list = arr.sortedBy({it.length})   
   println("Sorted list:")
   println(list)
}

输出

以下是输出:

Sorted list:
[is, This, India, tutorialspoint]

示例 3

以下示例创建一个 Person 类,该类以人的年龄作为参数。然后我们使用 sortedBy() 函数按升序对人的年龄进行排序:

class Person(var age: Int) {
   override fun toString(): String {
      return "(age=$age)"
   }
}
fun main(args: Array<String>) {
   val p1 = Person(24)
   val p2 = Person(25)
   val p3 = Person(26)
   val listOfage = arrayOf(p1, p2, p3)
   val sorted_age_list = listOfage.sortedBy { it.age }
   println("List of person ages:")
   println(sorted_age_list)
}

输出

以下是输出:

​
List of person ages:
[(age=24), (age=25), (age=26)]
kotlin_arrays.htm
广告