优先级队列ArrayList HashMap

时间:2016-11-23 14:41:47

标签: java arraylist hashmap priority-queue

我有一个HashMap,其键是距离,值是ArrayList,它包含一个特定距离(即键)的顶点列表

我想制作HashMap的优先级队列(基于键的优先级)来获取一次处于特定距离的所有顶点。

是否可以制作这样的优先级队列(无界队列)? 有人可以帮忙吗?

2 个答案:

答案 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));