Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin |具有自定义比较器的max heap类型的优先级队列_Kotlin - Fatal编程技术网

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}