HashMaps的优先级队列

时间:2011-03-19 17:53:30

标签: java

我有一个字符串和一个顶点的哈希映射。

我想为顶点类的属性距离创建一个优先级队列......我应该怎么做......

private final PriorityQueue Nodes ;
private HashMap<String,Vertex> c ;

我必须根据vertex.distance值在hashmap c的所有成员上创建一个优先级队列.....

请告诉我该怎么做,因为我总是在我正在尝试的任何事情上得到编译错误....

2 个答案:

答案 0 :(得分:2)

在不知道您的实施情况的情况下,我给出以下答案:

查看the javadoc,似乎有一个接受Comparator的构造函数。我怀疑你需要做的是创建一个对应于vertex.distance值的比较器。

所以,例如(这是未经测试的代码。将其视为伪代码):

class VertexComparator implements Comparator<Vertex>{
  public int compare(Vertex v1, Vertex v2){
    return v1.distance - v2.distance;
  }
}

之后创建Nodes之类的:

PriorityQueue Nodes = new PriorityQueue(100, new VertexComparator());

答案 1 :(得分:1)

根据我对您的问题的理解,我认为您需要一个PriorityQueue<Vertex>,它会根据Vertex属性的值对distance类的实例进行排序。

您需要定义一个传递给Comparator的{​​{1}},它指定对象的排序方式,或者您可以使PriorityQueue类实现{{1}并实现其Vertex方法。