使用优先级堆/比较器时输出不规则

时间:2011-06-11 05:51:30

标签: java priority-queue comparator

我正在尝试使用优先级队列,并试图按相反的顺序排列数字[降序]。

我实现了一个比较器,并使用反向约定与自然顺序相比,希望我能以相反的顺序得到数字。

 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

这既不是上升也不是下降!有人可以帮帮我吗。

谢谢!

2 个答案:

答案 0 :(得分:4)

我可以建议简化吗?

@Override
public int compare(Integer int1, Integer int2)
{
    return int2.compareTo( int1 );
}

答案 1 :(得分:2)

您将相同的数字int1与自身进行比较,而不是int1int2

int1.intValue() < int1.intValue()