fun main(){
val queue = PriorityQueue<Int>()
queue.add(3)
queue.add(2)
queue.add(4)
println(queue)
}
정수형의 경우, 기본으로 크기를 비교할 수 있기 때문에 우선순위큐에서 오름차순으로 자동 정렬해준다.
import java.util.*
data class Node(
val index : Int,
val value : Int
)
fun main(){
val queue = PriorityQueue<Node>()
queue.add(Node(0,5))
queue.add(Node(2,3))
queue.add(Node(1,100))
println(queue.poll())
println(queue.poll())
println(queue.poll())
}
하지만 데이터 클래스 등을 사용할 경우
어느 기준으로 비교해야하는지 알수 없기 때문에 오류가 발생한다.
따라서
import java.util.*
data class Node(
val index : Int,
val value : Int
) : Comparable<Node> {
override fun compareTo(other: Node): Int = index - other.index
}
fun main(){
val queue = PriorityQueue<Node>()
queue.add(Node(0,5))
queue.add(Node(2,3))
queue.add(Node(1,100))
println(queue.poll())
println(queue.poll())
println(queue.poll())
}