我有一个HashMap,其键是距离,值是ArrayList,它包含一个特定距离(即键)的顶点列表
我想制作HashMap的优先级队列(基于键的优先级)来获取一次处于特定距离的所有顶点。
是否可以制作这样的优先级队列(无界队列)? 有人可以帮忙吗?
答案 0 :(得分:1)
您可以使用class来封装距离和顶点。当Comparable
Comparator
new
时,实现PriorityQueue
界面或传递class Node implements Comparable<Node> {
int distance;
List<Vertex> list;
public Node(int distance, List<Vertex> list) {
this.distance = distance;
this.list = list;
}
@Override
public int compareTo(Node o) {
// your compare logic goes here
return Integer.compare(this.distance, o.distance);
}
}
对象。你可以这样做......
public static void main(String[] args) {
PriorityQueue<Node> q = new PriorityQueue<>();
}
=====
driver.get('http://www.google.com/ncr');
driver.findElement({name: 'q'}).then(function(input) {
input.sendKeys('webdriver');
input.sendKeys(WebDriver.Key.ENTER);
});
答案 1 :(得分:0)
PriorityQueue是无界的,它会根据队列中的元素数量动态增长。它在任何给定时间都具有内部容量,并且随着元素的添加而增加。
但是,如果您希望按键按键排序,即距离则使用按距离排序的LinkedHashMap,那么我在将其转换为PriorityQueue方面没有多大意义。
Map<Double, List<Vertex>> map = new LinkedHashMap<>();
//...
map = map.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));