정렬 함수에 대해 눈으로만 대충 보고 넘어갔더니 불변형 타입에 sorted가 아닌 sort 함수를 사용하여 에러가 발생한 적이 몇 번 있었다. 더이상 이러한 실수를 반복 하지 않도록 내용을 정리하며 확실하게 짚고 넘어가려 한다.
오름차순 정렬
val list = listOf(55, 20, 10, 5, 45, 15)
val result = list.sorted()
println("$result") // [5, 10, 15, 20, 45, 55]
역순 정렬
val list = listOf(55, 20, 10, 5, 45, 15)
val result = list.reversed()
println("$result") // [15, 45, 5, 10, 20, 55]
내림차순 정렬
val list = mutableListOf(55, 20, 10, 5, 45, 15)
val result = list.sortedDescending()
println("$resul") // [55, 45, 20, 15, 10, 5]
mutable 리스트의 경우 (), -ed() 둘 다 사용 가능하다.
오름차순 정렬
val list = mutableListOf(55, 20, 10, 5, 45, 15)
list.sort()
println("$list") // [5, 10, 15, 20, 45, 55]
역순 정렬
val list = mutableListOf(4, 15, 81, 51, 10)
list.reverse()
println("$list") // [10, 51, 81, 15, 4]
내림차순 정렬
val list = mutableListOf(4, 15, 81, 51, 10)
list.sortDescending()
println("$list") // [81, 51, 15, 10, 4]
문자열 길이로 정렬하며 with() 험수에 정렬 조건을 정의한 compartor를 전달한다.
val list = mutableListOf("apple", "kiwi", "grapes", "avocado")
// 오름차순 정렬
val result1 = list.sortedWith(compareBy { it.length })
println("$result1") // [kiwi, apple, grapes, avocado]
// 내림차순 정렬
val result2 = list.sortedWith(compareByDescending { it.length })
println("$result2") // [avocado, grapes, apple, kiwi]
// 오름차순 정렬
val list1 = mutableListOf("apple", "kiwi", "grapes", "avocado")
list1.sortWith(compareBy { it.length })
println("$list1") // [kiwi, apple, grapes, avocado]
// 내림차순 정렬
val list2 = mutableListOf("bc", "a", "def", "ghijklmn")
list2.sortWith(compareByDescending { it.length })
println("$list2") // [ghijklmn, def, bc, a]
val list = mutableListOf("red" to 1, "yellow" to 0, "orange" to 4, "green" to 2)
println("$list") // [(red, 1), (yellow, 0), (orange, 4), (green, 2)]
// 첫 번째 요소로 정렬
list.sortBy { it.first }
println("$list") // [(green, 2), (orange, 4), (red, 1), (yellow, 0)]
// 두 번째 요소로 정렬
list.sortBy { it.second }
println("$list") // [(yellow, 0), (red, 1), (green, 2), (orange, 4)]
참조
리스트 정렬 방법