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