【发布时间】:2018-06-11 11:32:52
【问题描述】:
我想使用 Java 中的优先级队列对元素进行排序。
这是我的代码。它有什么问题?
import java.io.*;
import java.util.*;
class PQ {
static class IntCompare implements Comparator<Integer>{
@Override
public int compare(Integer arg0, Integer arg1) {
if(arg0 > arg1)
return -1;
else if(arg0 < arg1)
return 1;
else
return 0;
}
}
public static void main (String[] args) {
int a[] = { 1, 3, 8, 5, 2, 6 };
Comparator<Integer> c = new IntCompare();
PriorityQueue<Integer> pq=new PriorityQueue<>(c);
for(int i = 0; i < a.length; i++)
pq.add(a[i]);
System.out.println(pq);
}
}
我的输出是:
8, 5, 6, 1, 2, 3
正确的输出:
8, 6, 5, 3, 2, 1
【问题讨论】:
-
您的 PriorityQueue 是有序的,
toString只是以无特定顺序输出它们(如 Javadoc 中明确说明的那样)。还可以考虑使用Comparator.reverseOrder()而不是重新发明轮子。
标签: java queue comparator priority-queue comparable