加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

带有自定义匿名比较器的Java Priority Queue

发布时间:2020-12-14 23:55:49 所属栏目:Java 来源:网络整理
导读:请原谅我,如果这是一个尝试过的问题,但我有点难以搞清楚. 我目前有一个类Node,每个’node’都是迷宫中的一个正方形.我正在尝试实现A *算法,因此每个节点都有一个f-cost(int)数据成员.我想知道是否有一种方法可以创建这些节点的优先级队列,并将f-cost变量设置
请原谅我,如果这是一个尝试过的问题,但我有点难以搞清楚.

我目前有一个类Node,每个’node’都是迷宫中的一个正方形.我正在尝试实现A *算法,因此每个节点都有一个f-cost(int)数据成员.我想知道是否有一种方法可以创建这些节点的优先级队列,并将f-cost变量设置为比较器?

我在网上看了一些例子,但我能找到的只是字符串优先级队列.我可以为Node类实现Comparator吗?这会允许我访问存储在其中的数据成员吗?

非常感谢!

解决方法

绝对.

您可以使用基于传递给构造函数的匿名Comparator的PriorityQueue:

int initCapacity = 10;
PriorityQueue<Node> pq = new PriorityQueue<Node>(initCapacity,new Comparator<Node>() {
    public int compare(Node n1,Node n2) {
        // compare n1 and n2
    }
});
// use pq as you would use any PriorityQueue

如果您的Node类已经实现了Comparable,您甚至不需要定义新的Comparator,因为默认情况下将使用该顺序.除非采用任何其他方法,否则将使用对象之间的自然顺序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读