我对java.util.PriorityQueue和我自己的Comparator的这个小例子感到非常困惑:
在这段代码中,我在队列中得到了错误的顺序。结果是:5,8,7
而不是5,7,8
我有什么问题Comparator<Vertex>
吗?谢谢您的帮助。
public class Test {
public static void main(String[] args) {
PriorityQueue<Vertex> priorityQueue = new PriorityQueue<Vertex>(new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Vertex u = (Vertex) o1;
Vertex v = (Vertex) o2;
return Integer.compare(new Integer(u.distance), new Integer(v.distance));
}
});
Vertex vertex1 = new Vertex(1);
Vertex vertex2 = new Vertex(2);
Vertex vertex3 = new Vertex(3);
Vertex vertex4 = new Vertex(4);
vertex1.distance = 8;
vertex2.distance = 5;
vertex3.distance = 7;
priorityQueue.add(vertex1);
priorityQueue.add(vertex2);
priorityQueue.add(vertex3);
}
private static class Vertex {
int distance;
int id;
public Vertex(int id) {
this.id = id;
}
}
}
A PriorityQueue
不会按顺序存储其元素。它可以按顺序将它们还给您。
如果您在上调用了poll()
3次PriorityQueue
,则会以适当的顺序恢复元素。
我有一个表格,例如如下: 我想在特定条件下对上述数据进行排序,例如:按升序对值s2的数据进行排序,其中col2=A5,这意味着数据应按正常顺序进行排序,但如果col2='A5',则值s2的顺序应为升序或降序的行应排在第一位,如下所示。 col2='A5'中的数据应根据列values2的值按升序或降序排列。这能实现吗? 具体来说,让我们只进行排序。如果我按col2下单。行将按A1、A2、A3、A4、
问题内容: 我想我已经写了如下几千遍: 但是直到现在我才考虑这些命令的顺序是否重要?我知道这之间并不要紧,因为在大多数1这些将被读取的,但它是 更好的 (以适应未来发展等方面)做W3C标准第一或最后? 问题答案: 毫无疑问,最佳做法是最后保留未添加前缀的属性: 无论是上期开出和将是已使用的一个。 是“实验”属性-实现可能包含与规范的偏差。的实现应与规范中的实现匹配。 最好在可用时使用 W3C实施
我有一个对象列表,需要根据特定的顺序排序。如下代码所示: 这也是当它得到排序,只有名称(“宝马”,“奥迪”,“奔驰”)的位置正在改变。我在汽车课上还有一个字段,那就是数量。数量将处于相同位置。这个职位也应该随着名字而改变。 我希望输出为,但实际输出为
如何按特定单词获取所有数据和订单。例如,我有列名状态。状态为“已批准”、“待定”、“已拒绝”的存储。 如何对数据进行排序,如按降序显示所有状态“待定”?
问题内容: 假设我有一个查询“ select * from子句,其中id在(0,2,5,1,3)中”,我实际上希望返回的行以它们在where子句中指定的相同顺序返回。ID的顺序将随查询的不同而改变,并且该顺序没有模式。 我知道可以更改数据模型,创建临时表等。但是请相信我,这些类型的解决方案在我的情况下将行不通。我也无法在应用程序代码中更改结果对象的顺序。 我还知道,不同的数据库引擎对事物的排序方式
我想用Apache Camel和Quartz2按spceific顺序设计路线。我定义了一个上下文,添加了两条路由: 代码构建和运行,但我没有来自控制台的反馈,我期待订单1的路由结果。此外,顺序为2的路由不会写入作为参数传递的文件。每条路线,采取单独正确运行。有人能帮帮我吗?