i有一个hashmap,其键是距离和值是arraylist,其中包含在特定距离(即键)
的顶点列表我想将Hashmap的优先级队列(基于键的优先级)以一次为特定距离的所有顶点。
是否有可能将这种优先级队列(无界排名)进行?谁能帮忙?
您可以使用类封装距离和顶点。在new
CC_3时,实现Comparable
接口或传递Comparator
对象。您可以执行此操作...
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<>();
}
PriortityQueue是无限的,并且根据队列中的元素数量动态增长。它在任何给定时间都具有内部能力,并且随着元素的添加而增加。
,但是我认为将其转换为PriortityQueue没有太多意义,如果您希望通过键(即距离进行排序),然后使用linkedhashmap,linkedhashmap用距离进行排序。
Map<Double, List<Vertex>> map = new LinkedHashMap<>();
//...
map = map.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));