불변 리스트는 정렬 결과를 새로운 리스트로 반환합니다.
| 메서드 | 설명 | 예시 |
|---|---|---|
| sorted() | 기본 오름차순 정렬 | list.sorted() |
| sortedDescending() | 기본 내림차순 정렬 | list.sortedDescending() |
| sortedBy { } | 특정 기준으로 오름차순 정렬 | list.sortedBy { it.length } |
| sortedByDescending { } | 특정 기준으로 내림차순 정렬 | list.sortedByDescending { it.length } |
| sortedWith(Comparator) | 커스텀 Comparator 기준 정렬 | list.sortedWith(compareBy { it.length }) |
fun main() {
val list = listOf(3, 1, 4, 2)
val sortedList = list.sorted()
println(sortedList) // [1, 2, 3, 4]
val sortedDescendingList = list.sortedDescending()
println(sortedDescendingList) // [4, 3, 2, 1]
val sortedByList = list.sortedBy { -it }
println(sortedByList) // [4, 3, 2, 1]
val sortedWithList = list.sortedWith(Comparator { a, b -> b - a })
println(sortedWithList) // [4, 3, 2, 1]
}
가변 리스트는 제자리에서 정렬합니다.
| 메서드 | 설명 | 예시 |
|---|---|---|
| sort() | 기본 오름차순 정렬 | mutableList.sort() |
| sortDescending() | 기본 내림차순 정렬 | mutableList.sortDescending() |
| sortBy { } | 특정 기준으로 오름차순 정렬 | mutableList.sortBy { it.length } |
| sortByDescending { } | 특정 기준으로 내림차순 정렬 | mutableList.sortByDescending { it.length } |
| sortWith(Comparator) | 커스텀 Comparator 기준 정렬 | mutableList.sortWith(compareBy { it.length }) |
fun main() {
val list = mutableListOf(3, 1, 4, 2)
list.sort()
println(list) // [1, 2, 3, 4]
list.sortDescending()
println(list) // [4, 3, 2, 1]
list.sortBy { -it }
println(list) // [4, 3, 2, 1]
list.sortWith(Comparator { a, b -> b - a })
println(list) // [4, 3, 2, 1]
}
sortedBy 는 각 원소 하나에 대해 정렬 기준 키(key)를 뽑아서 오름차순 정렬합니다.
하지만 만약 두 원소(x, y)를 서로 비교하는 방식으로 정렬 순서를 정해야 한다면, 단순히 하나의 키로는 표현할 수 없습니다.
따라서 커스텀 비교가 필요한 경우에는 sortedWith + Comparator를 써야 합니다.
예를 들어, 아래의 리스트가 있다고 가정합시다.