gpt4 book ai didi

java - 按指定值排序对象的优先级队列

转载 作者:行者123 更新时间:2023-11-30 07:00:48 24 4
gpt4 key购买 nike

我想使用指定值将对象添加到优先级队列像这样

PriorityQueue<Edge> queue=new PriorityQueue<Edge>();

这是 Edge 类,我想按其权重在优先级队列中排序

public class Edge {
private int start,end;
private double weight;

public Edge(int s, int e,Double w){
start=s;
end=e;
weight=w;
}

public int getStart(){
return start;
}

public int getEnd(){
return end;
}

public double getWeight(){
return weight;
}

最佳答案

您应该通过指定如何比较其元素来创建稍微不同的优先级队列。这是通过为 Edge 类传递匿名 Comparator 来完成的:

PriorityQueue<Edge> queue=new PriorityQueue<Edge>(10, new Comparator<Edge>() {
public int compare(Edge edge1, Edge edge2) {
if (edge1.getWeight() < edge2.getWeight()) return -1;
if (edge1.getWeight() > edge2.getWeight()) return 1;
return 0;
}
});

也许您需要根据排序顺序切换 -11 的返回值。

关于java - 按指定值排序对象的优先级队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30273794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com