You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中使用Comparator与Lambda按列排序二维数组

Kotlin二维数组按指定列排序的实现

针对你需要按二维数组第3列(索引为2)排序的需求,这里提供几种Kotlin的实现方式:

方法1:复用Java的Arrays.sort API

Kotlin可以直接调用Java的Arrays.sort方法,配合Comparator实现排序,写法比Java更简洁:

// 需要导入 java.util.Arrays 和 java.util.Comparator
Arrays.sort(arr, Comparator.comparingInt { it[2] })

这里用comparingInt替代Java的comparingDouble,更适配Int类型的列值,避免不必要的类型转换。

方法2:Kotlin原生原地排序

使用Kotlin自带的sortedArrayInPlace方法,直接在原数组上完成排序,更符合Kotlin风格:

arr.sortedArrayInPlace { a, b -> a[2].compareTo(b[2]) }

方法3:Kotlin原生返回新数组排序

如果不想修改原数组,可以用sortedArray返回一个新的排序后的数组:

val sortedArr = arr.sortedArray { a, b -> a[2].compareTo(b[2]) }

完整示例代码

import java.util.Arrays
import java.util.Comparator

fun main(){
    val rows = 3
    val cols = 4

    val arr = Array(rows) { r -> IntArray(cols) { c -> r + ((Math.random()*9).toInt()) } }
    println("排序前:")
    for (row in arr) {
        println(row.contentToString())
    }

    // 任选一种排序方式即可
    Arrays.sort(arr, Comparator.comparingInt { it[2] })
    // arr.sortedArrayInPlace { a, b -> a[2].compareTo(b[2]) }
    // val sortedArr = arr.sortedArray { a, b -> a[2].compareTo(b[2]) }

    println("\n排序后:")
    for (row in arr) {
        println(row.contentToString())
    }
}

内容的提问来源于stack exchange,提问作者JavaBoi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:50:15