首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优先级队列<Double>与优先级队列<Node>

优先级队列<Double>与优先级队列<Node>
EN

Stack Overflow用户
提问于 2017-04-26 08:32:52
回答 2查看 1.3K关注 0票数 2

好的,所以我尝试使用java优先级队列来根据节点包含的双精度val对节点进行排序。我知道如何做一个双优先级队列,但我需要其余的节点值来构建霍夫曼编码树。有没有办法根据节点的值对优先级队列进行排序,或者让队列对双精度值进行排序,然后尝试将它们与节点进行匹配会更好?

EN

回答 2

Stack Overflow用户

发布于 2017-04-26 08:47:48

您有两个选项,选择取决于DoubleNode中的含义

  1. Node实现Comparable<Node>,并使用PriorityQueue<Node>compareTo方法将按Double排序。您想要的队列顺序是元素的自然顺序。
  2. 使用带有Comparator参数的PriorityQueue构造函数。用于队列的Comparator应根据Double值排序。

如果Double确实是节点的自然顺序,则第一种方法更好。如果第二个字段仅对此队列重要,并且其他字段对于其他目的也同样重要,则第二个字段更好。

票数 3
EN

Stack Overflow用户

发布于 2019-04-15 18:14:07

您可以使用PriorityQueue实现,并在队列构造期间通过覆盖比较器接口的compare方法来管理元素的排序。

例如:要按Node值的升序对元素进行排序,请使用下面提到的优先级队列声明,然后简单地将节点添加到优先级队列。

代码语言:javascript
复制
PriorityQueue<Node> pq = new PriorityQueue<Node>(new Comparator<Node>(){
   public int compare(Node node1, Node node2){
       if(node2.val>node1.val){
          return -1;
       }
       else{
          return 1;
       }
   }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43623060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档