java - 带 lambda 表达式的 PriorityQueue<Integer>

标签 java lambda max-heap

我试图了解 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=49优先级 ,和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/

相关文章:

Python 使用 lambda 修改元组

c - 如何修改最大堆中值的优先级?

java - 无法通过 *.hbm.xml 文件中声明的 nameQuery 执行 SP

lambda - 如何在 lambda 演算中使用 β 归约来评估表达式?

c# - LINQ 如何在 lambda 表达式中选择超过 1 个属性?

algorithm - 在Max-Heapify算法中,验证左右元素是否小于堆大小的目的是什么?

algorithm - 为数组构建最大堆

java - 数组类型困惑?

java - Firebase JobDispatcher 在 1 小时后停止工作

java - 如何配置 EclipseLink HistoryPolicy 以跟踪对 GlassFish 4 中 JPA 实体的元素集合属性的更改?