Java中的comparator和PriorityQueue是如何工作的?

Java中的comparator和PriorityQueue是如何工作的?,java,algorithm,data-structures,priority-queue,Java,Algorithm,Data Structures,Priority Queue,这是我用来逆转Java中priorityQueue正常工作的代码。 但是我不明白,我在偏执论里放的lambda函数做了什么。有人能解释一下吗 PriorityQueue pq=新的PriorityQueue((a,b)->b-a) import java.util.*; 公共班机 { 公共静态void main(字符串[]args){ PriorityQueue pq=新的PriorityQueue((a,b)->b-a); pq.增加(2); pq.增加(4); pq.增加(1); pq.增加

这是我用来逆转Java中priorityQueue正常工作的代码。 但是我不明白,我在偏执论里放的lambda函数做了什么。有人能解释一下吗

PriorityQueue pq=新的PriorityQueue((a,b)->b-a

import java.util.*;
公共班机
{
公共静态void main(字符串[]args){
PriorityQueue pq=新的PriorityQueue((a,b)->b-a);
pq.增加(2);
pq.增加(4);
pq.增加(1);
pq.增加(100);
系统输出打印项次(pq);
System.out.println(pq.remove());
System.out.println(pq.remove());
System.out.println(pq.remove());
System.out.println(pq.remove());
}
} 

比较函数是一个函数,当第一个参数应在第二个参数之前排序时,必须返回小于
0
的任何值;当第二个参数应在第一个参数之前排序时,必须返回大于
0
的任何值;如果这两个参数在排序上等效,则必须返回
0


PriorityQueue
内部,它用于通过将结果与0进行比较来确定元素的相对顺序。

当第一个参数应在第二个参数之前排序时,比较函数是一个必须返回小于
0
的任何值的函数,当第二个参数应在第一个参数之前排序时,大于
0
的任何值;如果这两个参数在排序时是等效的,则大于
0

PriorityQueue
内部,它用于通过将结果与0进行比较来确定元素的相对顺序

import java.util.*;
public class Main
{
    public static void main(String[] args) {
        PriorityQueue<Integer> pq = new PriorityQueue<>((a,b) -> b - a);
        
        pq.add(2);
        pq.add(4);
        pq.add(1);
        pq.add(100);
        
        System.out.println(pq);
        System.out.println(pq.remove());
        System.out.println(pq.remove());
        System.out.println(pq.remove());
        System.out.println(pq.remove());
        
    }
}