我试图了解 lambda 函数如何与 Java 中的堆一起使用。下面的函数是创建一个最大堆
PriorityQueue<Integer> pq = new PriorityQueue<>((x, y) -> y - x);
有人可以告诉我 (x, y) -> y - x)
的作用吗?
我被告知“lambda 函数将采用两个整数作为输入参数,将它们相减,然后返回算术结果。”
如果我这样做
PriorityQueue<Integer> pq = new PriorityQueue<>((x, y) -> y - x);
pq.add(9);
pq.add(5);
System.out.println(pq.peek());
输出为 9,因为它是最大堆,但自 (9-5=4) 以来我不应该得到 4 作为输出吗?
最佳答案
9-5=4
是 9
的优先级 ,和pq.peek()
返回值,不是优先级
new PriorityQueue<>(comparator);
使用(x, y) -> y - x
比较并确定下一个应该查看哪个值。
所以9-5=4
大于5-9=-4
所以值 9
将是第一个。
关于java - 带 lambda 表达式的 PriorityQueue<Integer>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64272125/