我有一个字符串和一个顶点的哈希映射。
我想为顶点类的属性距离创建一个优先级队列......我应该怎么做......
private final PriorityQueue Nodes ;
private HashMap<String,Vertex> c ;
我必须根据vertex.distance值在hashmap c的所有成员上创建一个优先级队列.....
请告诉我该怎么做,因为我总是在我正在尝试的任何事情上得到编译错误....
答案 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
方法。