优先队列arraylist hashmap



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

最新更新