sort 系列方法

1、原地排序
  1. 升序排序
val arr = arrayOf(3, 1, 4, 1, 5, 9)

arr.sort()

println(Arrays.toString(arr))
# 输出结果

[1, 1, 3, 4, 5, 9]
  1. 降序排序
val arr = arrayOf(3, 1, 4, 1, 5, 9)

arr.sortDescending()

println(Arrays.toString(arr))
# 输出结果

[9, 5, 4, 3, 1, 1]
  1. 自定义升序排序
val arr = arrayOf(32, 1, 434, 1679, 5, 9)

arr.sortBy { it % 2 }

println(Arrays.toString(arr))
# 输出结果

[32, 434, 1, 1679, 5, 9]
data class Person(val name: String, val age: Int)

val people = arrayOf(
    Person("Alice", 30),
    Person("Bob", 20),
    Person("Charlie", 25)
)

people.sortBy { it.age }

println(Arrays.toString(people))
# 输出结果

[Person(name=Bob, age=20), Person(name=Charlie, age=25), Person(name=Alice, age=30)]
  1. 自定义降序排序
val arr = arrayOf(32, 1, 434, 1679, 5, 9)

arr.sortByDescending { it.toString().length }

println(Arrays.toString(arr))
# 输出结果

[1679, 434, 32, 1, 5, 9]
2、返回新数组
val arr = arrayOf(3, 1, 4, 1, 5, 9)

// 返回新数组
val sorted = arr.sortedArray()
val sortedDesc = arr.sortedArrayDescending()

// 返回 List
val sortedList = arr.sorted()
val sortedDescList = arr.sortedDescending()

println(Arrays.toString(sorted))
println(Arrays.toString(sortedDesc))
println(sortedList)
println(sortedDescList)
# 输出结果

[1, 1, 3, 4, 5, 9]
[9, 5, 4, 3, 1, 1]
[1, 1, 3, 4, 5, 9]
[9, 5, 4, 3, 1, 1]
val arr = arrayOf(32, 1, 434, 1679, 5, 9)

val custom = arr.sortedBy { it % 2 }
val customDesc = arr.sortedByDescending { it.toString().length }

println(custom)
println(customDesc)
# 输出结果

[32, 434, 1, 1679, 5, 9]
[1679, 434, 32, 1, 5, 9]
3、部分排序
val arr = arrayOf(1111, 32, 1, 434, 1679, 5, 9, 2222)

arr.sort(1, 7)

println(Arrays.toString(arr))
# 输出结果

[1111, 1, 5, 9, 32, 434, 1679, 2222]

drop 系列方法

1、丢弃前 n 个元素
val arr = arrayOf(1, 2, 3, 4, 5)

val result1 = arr.drop(0)
val result2 = arr.drop(2)
val result3 = arr.drop(5)
val result4 = arr.drop(10)

println(result1)
println(result2)
println(result3)
println(result4)
# 输出结果

[1, 2, 3, 4, 5]
[3, 4, 5]
[]
[]
2、丢弃后 n 个元素
val arr = arrayOf(1, 2, 3, 4, 5)

val result1 = arr.dropLast(2)
val result2 = arr.dropLast(0)
val result3 = arr.dropLast(5)

println(result1)
println(result2)
println(result3)
# 输出结果

[1, 2, 3]
[1, 2, 3, 4, 5]
[]
3、条件丢弃(从开头)
val arr = arrayOf(1, 3, 5, 2, 4, 6, 11)

// 丢弃开头的奇数,一旦遇到偶数就停止
val result1 = arr.dropWhile { it % 2 == 1 }

// 丢弃开头的小于 3 的元素,一旦遇到大于等于 3 的元素就停止
val result2 = arr.dropWhile { it < 3 }

println(result1)
println(result2)
# 输出结果

[2, 4, 6, 11]
[3, 5, 2, 4, 6, 11]
4、条件丢弃(从结尾)
val arr = arrayOf(1, 2, 3, 4, 5, 6)

// 丢弃结尾的偶数,一旦遇到奇数就停止
val result1 = arr.dropLastWhile { it % 2 == 0 }

// 丢弃结尾的大于 3 的元素,一旦遇到小于等于 3 的元素就停止
val result2 = arr.dropLastWhile { it > 3 }

println(result1)
println(result2)
# 输出结果

[1, 2, 3, 4, 5]
[1, 2, 3]

更多推荐