Kotlin 数组 - sortWith() 函数



Kotlin 数组的 sortWith() 函数用于根据比较器函数指定的顺序就地排序数组的元素。

此函数还接受两个可选参数:formIndex 和 toIndex,以根据比较器对范围内的元素进行排序。

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

异常

以下是异常:

  • IndexOutOfBoundsException - 如果 fromIndex 小于零或 toIndex 大于此数组的大小

  • IllegalArgumentException - 如果 fromIndex 大于 toIndex。

语法

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

fun <T> Array<T>.sortWith(comparator: Comparator<in T>)

参数

此函数接受以下参数。

  • formInfex - 它表示要排序的范围的开始(包含),默认为 0。

  • toIndex - 它表示要排序的范围的结束(不包含),默认为此数组的大小。

返回值

此函数不返回值。它将原始数组修改为已排序的数组。

示例 1

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

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

输出

以上代码生成以下输出:

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

示例 2

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

fun main(args: Array<String>){
   val arr = arrayOf<String>("Daisy", "Rahul", "Aman", "Prajwalani")
   arr.sortWith(Comparator<String>{ a, b ->
      when {
         a < b -> 1
         a > b -> -1
         else -> 0
      }
   })
   println("Sorted array: " + arr.joinToString())
}

输出

以下是输出:

Sorted array: Rahul, Prajwalani, Daisy, Aman

示例 3

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

fun main(args: Array<String>) {
   val numbers = arrayOf(42, 10, 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
   numbers.sortWith(descendingComparator)
    
   // Display the sorted array
   println("Sorted array with comparator:"+ numbers.joinToString())
}

输出

以上代码产生以下输出:

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