È possibile utilizzare un'espressione lambda dal Java 8.
Il codice seguente stamperà 10, il più grande.
PriorityQueue<Integer> pq = new PriorityQueue<>((x, y) -> y - x);
pq.add(10);
pq.add(5);
System.out.println(pq.peek());
La funzione lambda avrà due interi come parametri di input, li sottrarre l'uno dall'altro, e restituire il risultato aritmetica.La funzione lambda implementa l'interfaccia funzionale, Comparator<T>
. (Questo è usato in luogo, al contrario di una classe anonima o un'implementazione discreta.)
fonte
2016-07-09 21:10:33
Penso che dovresti usare il costruttore che riceve un comparatore per quello. Utilizzare Collections.reverseOrder per ottenere un comparatore inverso. –
è necessario passare un comparatore. vedi http://stackoverflow.com/questions/683041/java-how-do-i-use-a-priorityqueue – DarthVader