我正在尝试使用优先级队列,并试图按相反的顺序排列数字[降序]。
我实现了一个比较器,并使用反向约定与自然顺序相比,希望我能以相反的顺序得到数字。
public static void main(String[] args)
{
PriorityQueue<Integer> Descending = new PriorityQueue<Integer>(10,stats.new
minComparator());
Descending.add(5);
Descending.add(2);
Descending.add(7);
while(Descending.size() > 0)
{
System.out.print(Descending.remove());
}
}
class minComparator implements Comparator<Integer>
{
@Override
public int compare(Integer int1, Integer int2)
{
if(int1.intValue() < int1.intValue())
return 1;
else if(int1.intValue() > int1.intValue())
return -1;
else
return 0;
}
}
这是输出:
5 7 2
这既不是上升也不是下降!有人可以帮帮我吗。
谢谢!
答案 0 :(得分:4)
我可以建议简化吗?
@Override
public int compare(Integer int1, Integer int2)
{
return int2.compareTo( int1 );
}
答案 1 :(得分:2)
您将相同的数字int1
与自身进行比较,而不是int1
和int2
int1.intValue() < int1.intValue()