Kotlin sort 정렬 오름차순, 내림차순, 임의 순
Notepad96
·2020. 10. 11. 21:06
1. Sort(정렬)
kotlin은 다양한 sort 함수를 제공하여 상황에 맞은 sort 함수를 사용해야 한다.
우선 간단하게 분류를 해보면 우선 sort와 sortDescending 이 있다.
sort인 것은 오름차순 sortDescending 처럼 Descending이 붙으면 내림차순으로 정렬을 한다.
또한 sort와 sorted처럼 뒤에 ed가 붙는 것과 붙지 않는 것이 있다.
뒤에 -ed가 붙는 것은 정렬된 List 타입으로 반환해준다.
따라서 -ed가 붙는 sort를 사용해 주는 경우, 해당 리스트에 다시 초기화를 해주어야만 정렬된 리스트를 저장한다.
이 외의 -By, -With와 같은 sort가 존재한다.
+) MutableList타입일 경우 sort, sorted 2가지 다 존재하며
sort를 사용할 경우 해당 MutableList를 정렬한다.
sorted를 사용할 경우 정렬된 List 타입을 반환하므로 이를 다시 저장해주어야 한다.
단, List의 타입일 경우 sort 형태는 없고 sorted의 형태만 존재한다.
2. 코 드
환경 : Kotlin Version = 1.4.20, JVM
fun main(args: Array<String>) {
println("==================1========================")
val ml = mutableListOf(5, 4, 1, 2, 3, 6)
println(ml)
ml.sort() // 오름차순 정렬
println(ml)
println("===================2=======================")
val ml2 = ml.sorted().toMutableList() // 오름차순으로 정렬된 List 반환
println(ml2)
ml2.sortDescending() // 내림차순으로 정렬
println(ml2)
println("====================3======================")
val ml3 = mutableListOf(2 to "abc", 4 to "abc", 3 to "qwe", 1 to "zwr")
println(ml3)
ml3.sortByDescending { it.second } // second를 기준으로 내림차순
println(ml3)
println("====================4======================")
val ml4 = ml3.sortedWith( compareBy( {it.second}, {-it.first}) ) // 우선 second 기준으로 오름차순, 만약 second가 동일하다면 first로 내림차순
println(ml4)
println("====================5======================")
val ml5 = mutableListOf("1", "32", "23", "4", "5")
val ml6 = ml5.sortedWith( Comparator { a, b -> (b+a).compareTo(a+b) })
println(ml5)
println(ml6)
val ml7 = mutableListOf(2, 5, 3, 1, 4)
val ml8 = ml7.sortedWith( Comparator { a, b -> b - a })
println(ml7)
println(ml8)
}
- 1. mutableList 타입의 ml을 sort 함수를 사용하여 오름차순으로 정렬하였다.
- 2. ml을 sorted 함수를 사용하여서 정렬된 상태의 List를 얻는다.
이를 다시 mutableList로 변환 해준다.
( 변환하지 않고 List 타입일 경우 sort -ed 형태의 정렬 함수만 존재한다.)
sortDescending 함수를 사용하여서 내림차순으로 정렬한다.
- 3. sortByDescending 함수를 사용하여 정렬을 하고 있다.
By가 붙는 sort 함수는 어느 기준을 하나 지정하면 그 값을 기준으로 정렬을 한다.
위 예시에서는 it.second를 주었으므로 second의 값, 문자열을 기준으로 내림차순 정렬한다.
- 4. sortedWith 함수는 comparator 를 주어 정렬의 순서를 지정해줄 수 있다.
위 예시에서 나온
compareBy( {it.second}, {-it.first})
은 우선 it.second를 기준으로 오름차순 정렬을 한다.
이후 it.second가 동일하다면 it.first를 기준으로 내림차순 정렬을 한다.
(본래 오름차순이지만 마이너스(-)를 해주어서 내림차순이 된다)
결과적으로 second 오름차순으로, first는 내림차순으로 정렬된 List를 얻을 수 있다.
+)
- 5. Comparator를 사용하여 두 값을 이용하여 정렬을 할 수 있다.
3. 참 조
'Kotlin > Collections' 카테고리의 다른 글
Kotlin list for문 - index loop (0) | 2020.11.22 |
---|---|
Kotlin List, MutableList 추가, 삭제, 프로퍼티 (0) | 2020.11.22 |
Kotlin ArrayList<Int> vs. IntArray - 리스트, 배열 (0) | 2020.11.21 |
Kotlin JS sort 정렬 오름차순, 내림차순, 임의 순 (0) | 2020.10.09 |
Kotlin 변수 묶기 Pair, Triple (1) | 2020.10.08 |