Kotlin 数组 - sortedDescending() 函数



Kotlin 数组的 sortedDescending() 函数用于返回一个列表,该列表包含数组元素,并根据其自然排序顺序以降序排列。

此函数创建一个新的降序排序列表,而不会修改原始数组。它只对相同类型的数据进行排序,如果数据类型不同,则返回错误。

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

语法

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

fun <T : Comparable<T>> Array<out T>.sortedDescending(): List<T>

参数

此函数不接受任何参数。

返回值

此函数返回一个列表,该列表包含此数组中以降序排序的元素。

示例 1

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

fun main(args: Array<String>){
   var arr = arrayOf<Int>(2, 4, 5, 6, 1)
   
   // sort the array element in descending.        
   val list = arr.sortedDescending()   
   println("list: $list") 
}

输出

以上代码生成以下输出:

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

示例 2

现在,我们创建一个字符串数组。然后,我们使用 sortedDescending() 函数以降序对元素进行排序:

fun main(args: Array<String>){
   var arr = arrayOf<String>("Hello", "hyderabad", "tutorialspoint", "India")
        
   val list = arr.sortedDescending()   
   println("Descending array list: $list")   
}

输出

以下是输出:

Descending array list: [tutorialspoint, hyderabad, India, Hello]

示例 3

以下示例创建一个 Person 对象数组。然后,我们使用 sortedDescending() 函数根据其年龄以降序对数组进行排序:

data class Person(val name: String, val age: Int) : Comparable<Person> {
   override fun compareTo(other: Person): Int {
      return this.age.compareTo(other.age)
   }
}
fun main() {
   val people = arrayOf(
      Person("Ram", 42),
      Person("Lakashman", 25),
      Person("Bharat", 35),
      Person("Krishna", 28),
      Person("Arjun", 40)
   )

   println("Original array:")
   people.forEach { println("Name: ${it.name}, Age: ${it.age}") }

   // Sort the array in descending order
   val sortedPeople = people.sortedDescending()

   println("\nSorted array in descending order by age:")
   sortedPeople.forEach { println("Name: ${it.name}, Age: ${it.age}") }
}

输出

以上代码产生以下输出:

Original array:
Name: Ram, Age: 42
Name: Lakashman, Age: 25
Name: Bharat, Age: 35
Name: Krishna, Age: 28
Name: Arjun, Age: 40

Sorted array in descending order by age:
Name: Ram, Age: 42
Name: Arjun, Age: 40
Name: Bharat, Age: 35
Name: Krishna, Age: 28
Name: Lakashman, Age: 25
kotlin_arrays.htm
广告