Chr*_*ris 19 java priority-queue standard-library
Java标准库中的Priority Queue实现似乎是最小优先级队列,我发现有些令人困惑.为了将其变为最大值,我创建了一个自定义比较器对象.
Comparator<Integer> cmp = new Comparator<Integer>()
{
public int compare( Integer x, Integer y )
{
return y - x;
}
};
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更优雅的解决方案.基本上我不是一个可用于实现Dijkstras等的通用优先级队列.我甚至没有意识到会有反向操作的那些:/
cyc*_*jan 27
这是一个使用的代码片段Collections.reverseOrder()-
PriorityQueue<Integer> maxPQ = new PriorityQueue<Integer>(20,Collections.reverseOrder());
Run Code Online (Sandbox Code Playgroud)
您还需要提供优先级队列的初始容量(此处为20)以及比较器.
小智 6
不确定您所说的优雅是什么意思,但是当我想要像 MaxHeap(在 Dijkstra 中使用的)一样实现 PQ 时,我只使用内联比较器构造函数。
PriorityQueue<Integer> PQ= new PriorityQueue<Integer>(20, new Comparator<Integer>(){
public int compare(Integer o1, Integer o2){
return o2 - o1;
}
});
Run Code Online (Sandbox Code Playgroud)
它足够简单,我正在寻找简单的东西并且只想使用一次比较器。
| 归档时间: |
|
| 查看次数: |
25475 次 |
| 最近记录: |