Kotlin 数组 - sortedWith() 函数



Kotlin 数组的 sortedWith() 函数用于根据指定的比较器函数返回包含数组元素的已排序列表。

比较器是一个函数,根据传递给函数的两个变量的比较结果返回 1、-1 或 0。

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

语法

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

fun <T> Array<out T>.sortedWith(
   comparator: Comparator<in T>
): List<T>

参数

此函数接受一个比较器作为参数。

返回值

此函数返回一个包含此数组已排序元素的列表。

示例 1

以下是一个演示 sortedWith() 函数用法的基本示例:

fun main(args: Array<String>){
   val arr = arrayOf<Int>(5, 3, 6, 7, 4)
   var res = arr.sortedWith(Comparator<Int>{ a, b ->
      when {
         a > b -> 1
         a < b -> -1
         else -> 0
      }
   })
   println("Sorted array: $res")
}

输出

以上代码生成以下输出:

Sorted array: [3, 4, 5, 6, 7]

示例 2

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

fun main(args: Array<String>){
   val arr = arrayOf<String>("Daisy", "Rahul", "Ram", "Prajwalani")
   var res = arr.sortedWith(Comparator<String>{ a, b ->
      when {
         a > b -> 1
         a < b -> -1
         else -> 0
      }
   })
   println("Sorted array: $res")
}

输出

以下是输出:

Sorted array: [Daisy, Prajwalani, Rahul, Ram]

示例 3

下面的示例创建一个比较器,用于以降序对元素进行排序。然后我们使用 sortedWith() 函数根据此比较器对数组的元素进行排序:

fun main(args: Array<String>) {
   val numbers = arrayOf(42, 7, 23, 89, 5, 34)

   // Display the original array
   println("Original array: ${numbers.joinToString(", ")}")

   // create a custom comparator to sort the array in descending order
   val descendingComparator = Comparator<Int> { a, b -> when {
      a < b -> 1
      a > b -> -1
      else -> 0 }       
   }

   // Sort the array using the custom comparator
   val sortedNumbers = numbers.sortedWith(descendingComparator)
    
   // Display the sorted array
   println("Sorted array with comparator: ${sortedNumbers.joinToString(", ")}")
}

输出

以上代码产生以下输出:

Original array: 42, 7, 23, 89, 5, 34
Sorted array with comparator: 89, 42, 34, 23, 7, 5
kotlin_arrays.htm
广告