![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKqAWE%2FbtqN9L93s1d%2FRA4KYnkVUfguwyKvdInKK1%2Fimg.png)
Kotlin sort map by value - 맵 값(Value)으로 정렬
Notepad96
·2020. 11. 24. 14:42
1. Map value sort
Map은 Key/Value 쌍의 값을 갖는 구조이다.
기존 Map에서는 toSortedMap 함수를 사용하여서 Key값을 기준으로 오름차순, 내림차순 등 정렬을 할 수 있었다.
Kotlin Map, MutableMap 추가, 삭제, 프로퍼티
1. Map, MutableMap Map과 MutableMap 또한 List와 MutableList의 관계처럼 불변과 가변의 차이를 갖는다. Map을 상속받는 MutableMap public interface MutableMap : Map { ... } Map은 Key/Value 쌍의 데이터를..
notepad96.tistory.com
그러나 Value 값들을 사용하여서 정렬을 하고 싶을 경우가 있다.
이럴 경우 Map을 List로 변환한다음 정렬을 해준 후 다시 Map으로 변환해주는 방법을 사용해야 한다.
또한, 리스트로 변환 시 Key/Value 쌍은 Pair<Key type, Value type> 타입이되므로
Key, Value를 둘 다 각각 조건을 주어 정렬을 할 수도 있다.
Kotlin 변수 묶기 Pair, Triple
1. 2개의 변수 묶기 - Pair data class Pair (val first: A, val second: B) Pair 클래스는 다음과 같이 정의되어 있다. Pair 클래스는 data class로서 2개의 변수를 묶어 사용하기 유용하다. fun main()..
notepad96.tistory.com
2. 코 드
환경 : Kotlin Version = 1.4.10, JVM
fun main(args : Array<String>) {
val mm = mutableMapOf(1 to "za", 3 to "yd", 2 to "zzz", 4 to "aa")
println("=============M A P================")
println(mm)
println("=============toList================")
val tl = mm.toList()
for(i in tl) {
if(i is Pair<Int, String>) {
println("타입 검사=${i.first}:${i.second}")
}
}
println("=============정 렬================")
val tl2 = tl.sortedBy { it.second } // Value 오름차순
//val tl2 = tl.sortedByDescending { it.second } // Value 내림차순
println(tl2)
println("=============toMutableMap================")
val mm2 = tl2.toMap().toMutableMap()
mm2.forEach { (k, v) -> print("${k}:${v} ") }
println()
println("=============한 줄로 작성================")
val mm3 = mm.toList().sortedByDescending { it.second }.toMap().toMutableMap()
mm3.forEach { (k, v) -> print("${k}:${v} ") }
println()
}
- toList 함수를 사용하여 List로 변환 후 for문을 반복하며 타입을 확인해 보면
Pair<Int, String>의 타입을 갖는 것을 볼 수 있다.
- 정렬은 리스트에서 정렬을 해주었던 것과 마찬가지의 방법으로 해주면 된다.
- 정렬 후 리스트를 다시 Map으로 변환하면 마치 Value를 사용하여 Map을 정렬한 결과를 얻을 수 있다.
단, List에는 toMap 함수만 존재하여 이후 Map의 변화가 있을 것으로 예상된다면(Map은 불변이므로 삽입X, 삭제X)
toMap 함수를 사용하여 Map으로 변환 후 toMutableMap 함수를 사용하여 MutableMap 타입으로 변환해주어야 한다.
- 이와 같은 과정을 자세히 알아보기 위하여 나열한 것이고 마지막을 보면 한줄로도 정렬된 결과를 얻을 수 있다.
3. 참 조
MutableMap - Kotlin Programming Language
kotlinlang.org
'Kotlin > Collections' 카테고리의 다른 글
Kotlin any, all, none - 존재 여부 확인 (0) | 2020.11.25 |
---|---|
Kotlin filter - 조건에 맞는 원소 검색 (0) | 2020.11.24 |
Kotlin Map, MutableMap 추가, 삭제, 프로퍼티 (0) | 2020.11.23 |
Kotlin set 합집합, 차집합, 교집합 - union, subtract, intersect (0) | 2020.11.23 |
Kotlin Set, MutableSet 추가, 삭제, 프로퍼티 (0) | 2020.11.22 |