5.3.9 排序操作符

reversed(): List<T>

倒序排列集合元素。 代码示例

  1. >>> val list = listOf(1,2,3)
  2. >>> list.reversed()
  3. [3, 2, 1]

这个函数,Kotlin是直接调用的java.util.Collections.reverse()方法。其相关代码如下:

  1. public fun <T> Iterable<T>.reversed(): List<T> {
  2. if (this is Collection && size <= 1) return toList()
  3. val list = toMutableList()
  4. list.reverse()
  5. return list
  6. }
  7. public fun <T> MutableList<T>.reverse(): Unit {
  8. java.util.Collections.reverse(this)
  9. }
  10. ```#### `sorted`和`sortedDescending`
  11. 升序排序和降序排序。
  12. 代码示例
  13. ```kotlin
  14. >>> val list = listOf(1,3,2)
  15. >>> list.sorted()
  16. [1, 2, 3]
  17. >>> list.sortedDescending()
  18. [3, 2, 1]
  19. ```#### `sortedBy`和`sortedByDescending`
  20. 可变集合MutableList的排序操作。根据函数映射的结果进行升序排序和降序排序。
  21. 这两个函数定义如下:
  22. ```kotlin
  23. public inline fun <T, R : Comparable<R>> MutableList<T>.sortBy(crossinline selector: (T) -> R?): Unit {
  24. if (size > 1) sortWith(compareBy(selector))
  25. }
  26. public inline fun <T, R : Comparable<R>> MutableList<T>.sortByDescending(crossinline selector: (T) -> R?): Unit {
  27. if (size > 1) sortWith(compareByDescending(selector))
  28. }

代码示例

  1. >>> val mlist = mutableListOf("abc","c","bn","opqde","")
  2. >>> mlist.sortBy({it.length})
  3. >>> mlist
  4. [, c, bn, abc, opqde]
  5. >>> mlist.sortByDescending({it.length})
  6. >>> mlist
  7. [opqde, abc, bn, c, ]