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
廣告

© . All rights reserved.