Неправильный вывод при использовании Priority Heap/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

Это не восхождение и не нисхождение!. Может кто-нибудь, пожалуйста, помогите мне.

Спасибо!


person codeObserver    schedule 11.06.2011    source источник
comment
вам нужно: java.util.Collections.reverseOrder() в качестве компаратора И для изучения и использования отладчика.   -  person bestsss    schedule 11.06.2011


Ответы (2)


Вы сравниваете одно и то же число int1 с самим собой вместо int1 и int2

int1.intValue() < int1.intValue()
person Alex Gitelman    schedule 11.06.2011

Могу я предложить упрощение?

@Override
public int compare(Integer int1, Integer int2)
{
    return int2.compareTo( int1 );
}
person trutheality    schedule 11.06.2011
comment
Thnx, это намного чище. Правильный синтаксис: return new Integer(int2).compareTo(int1); - person codeObserver; 11.06.2011
comment
Верно. Спасибо. но вам не нужно new. - person trutheality; 11.06.2011