带有自定义匿名比较器的Java Priority Queue
发布时间:2020-05-24 18:10:47 所属栏目: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,因为默认情况下将使用该顺序.除非采用任何其他方法,否则将使用对象之间的自然顺序. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
