如果这是一个尝试过的问题,请原谅我,但我有点难以弄清楚。
我目前有一个节点类,每个“节点”都是迷宫中的一个正方形。我正在尝试实现 A* 算法,因此每个节点内部都会有一个 f-cost (int) 数据成员。我想知道是否有一种方法可以创建这些节点的优先级队列,并将 f-cost 变量设置为比较器?
我在网上查看了示例,但我所能找到的只是字符串优先级队列。我可以为 Node 类实现 Comparator 吗?这允许我访问存储在其中的数据成员吗?
非常感谢!
绝对地。
您可以使用PriorityQueue
基于匿名Comparator
传递给构造函数:
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
If your Node
类已经实现了Comparable
你甚至不需要定义一个新的Comparator
,因为默认情况下将使用该顺序。除非使用任何其他方法,否则将使用对象之间的自然顺序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)