Kotlin data class 두 가지 이상으로 compare하기
2021. 5. 24. 20:21
반응형
백준에서 이 문제를 풀다가 data class에서 두 가지로 compare해서 priority queue를 만들어야 할 경우가 생겼다.
해당 문제에서는 바이러스의 번호를 우선으로 하고, 그 다음에는 시간으로 우선을 하여 정렬을 하는 priority queue를 써서 풀었어야 했다. 지금까지는 data class에서 하나만 비교해서 정렬을 하는 prioirty queue를 썼으면 됐는데, 처음으로 두 가지로 비교해서 사용해봤었다.
- data class에서 한 가지로 Priority를 비교할 때는 아래와 같이 했었다.
data class Node(val i: Int, val j: Int, val cost: Int) : Comparable<Node> {
override fun compareTo(other: Node): Int = cost - other.cost
}
- 그런데 아래와 같이 사용하면 하나 이상의 값으로 data class를 비교할 수 있다.
data class Virus(val x: Int, val y: Int, val v: Int, val time: Int) : Comparable<Virus> {
override fun compareTo(other: Virus) = compareValuesBy(this, other, { it.time }, { it.v })
}
compareValuesBy를 사용하면 여러 값으로 data class의 우선 순위를 정할 수 있다. 위 코드는 time을 오름 차순으로 정렬하고, time도 같다면 v를 오름차순으로 정렬한다.
반응형
'프로그래밍 > 안드로이드+코틀린' 카테고리의 다른 글
[Android] Ripple view에 맞게 적용시키기 (0) | 2021.06.23 |
---|---|
Android studio 프로젝트 생성 시 Kotlin 버전 찾을 수 없는 오류 (0) | 2021.05.29 |
[안드로이드 오류해결] TextInputLayout style error (0) | 2021.03.29 |
[안드로이드] 기본 라이프사이클 생명주기 쉽게 설명 (0) | 2021.03.14 |
안드로이드 앱 빌드 오류 (1) | 2021.02.07 |