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

前端之家收集整理的这篇文章主要介绍了带有自定义匿名比较器的Java Priority Queue前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请原谅我,如果这是一个尝试过的问题,但我有点难以搞清楚.

我目前有一个类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,因为默认情况下将使用该顺序.除非采用任何其他方法,否则将使用对象之间的自然顺序.

猜你在找的Java相关文章