我想在 Kotlin 中对二维数组进行排序,我知道如何在 Java 中进行排序,但它在 Kotlin 中不起作用,必须有不同的语法。我在网上冲浪,但找不到直接的语法解决方案。
我正在创建一个随机二维数组,我想根据它的第 3 列对其进行排序。
fun main(){
val rows = 3
val cols = 4
val arr = Array(rows) { r -> IntArray(cols) { c -> r + ((Math.random()*9).toInt()) } }
for (row in arr) {
println(row.contentToString())
}
// I want to sort here
// In Java I would do this: Arrays.sort(arr, Comparator.comparingDouble( o -> o[2] ))
}
如何在 Kotlin 中做同样的事情,在 Java 中我可以按以下方式对其进行排序:
Arrays.sort(arr, Comparator.comparingDouble( o -> o[2] ))
如何在 Kotlin 语法中做同样的事情?
使用方法
sortBy
将允许您返回选定的排序条件。
import kotlin.random.Random
import kotlin.random.nextInt
val rows = 3
val cols = 4
val arr = Array(rows) { r ->
IntArray(cols) {
r + Random.nextInt(1..5) * 9
}
}
fun printArr() {
for (row in arr) {
println(row.contentToString())
}
}
printArr()
arr.sortBy { it[2] }
printArr()
// Generated:
// [36, 45, 45, 45]
// [19, 37, 28, 19]
// [11, 38, 11, 38]
// Output:
// [11, 38, 11, 38]
// [19, 37, 28, 19]
// [36, 45, 45, 45]