Kotlin |具有自定义比较器的max heap类型的优先级队列
我想为以下类的对象创建一个优先级队列(最大堆)Kotlin |具有自定义比较器的max heap类型的优先级队列,kotlin,Kotlin,我想为以下类的对象创建一个优先级队列(最大堆) data class Tuple(val column: Column, var count: Int) 其中,列为 data class Column(val name: String, val dataType: String) 我编写了以下代码,用自定义比较器(如下所示)为上述类对象实例化优先级队列: val compareByCount: Comparator<Tuple> = compareByDescending { i
data class Tuple(val column: Column, var count: Int)
其中,列
为
data class Column(val name: String, val dataType: String)
我编写了以下代码,用自定义比较器(如下所示)为上述类对象实例化优先级队列:
val compareByCount: Comparator<Tuple> = compareByDescending { it.count }
val pq = PriorityQueue<Tuple>(compareByCount)
val compareByCount:Comparator=compareByDescending{it.count}
val pq=优先级队列(比较计数)
当我填充
PriorityQueue
并执行pq.peek()
时,它返回计数最低的Tuple
对象。为什么会这样?尽管我提供了一个按照降序进行检查的比较器。根据我的理解,compareByDescending
应该对计数最大的元素和堆的开头进行排序
但由于这并没有给你预期的结果,也许你可以尝试一下:
val compareByCount = Comparator<Tuple> {t1, t2 -> t1.count - t2.count}
这将按照oposite顺序将元素添加到堆中,如compareByDescending
val pq = PriorityQueue {t1: Tuple, t2 : Tuple -> t1.count - t2.count}