当前位置: 首页 > 知识库问答 >
问题:

PriorityQueue与lamda表达式

艾令雪
2023-03-14

我试图理解lambda函数如何在Java中使用堆

PriorityQueue<Integer> pq = new PriorityQueue<>((x, y) -> y - x);

有人能告诉我什么(x, y)-

所以如果我这样做了

PriorityQueue<Integer> pq = new PriorityQueue<>((x, y) -> y - x);
pq.add(9);

pq.add(5);

System.out.println(pq.peek());

输出是9,因为它是一个最大堆,但我是否应该得到4作为输出,因为(9-5=4)?


共有2个答案

程祯
2023-03-14

我试图理解lambda函数在Java中如何处理堆。

Lambda表达式本身与堆数据结构无关。

>

堆-是一种数据结构,最初在数学中定义,现在大量用于计算机科学领域。

谁能告诉我(x,y)是什么-

这就是你的比较器,也就是说,一个lambda表达式,它实现了一个比较器

PriorityQueue

PriorityQueue

int compare(to1,t2)比较它的两个参数的顺序。返回负整数、零或正整数,因为第一个参数小于、等于或大于第二个参数。

所以,在你的代码中:

PriorityQueue<Integer> pq = new PriorityQueue<>((x, y) -> y - x);
pq.add(9);
pq.add(5);
System.out.println(pq.peek());

当您时,两个数字在Heap/PQ中排队。peek()95分别被传递到xy。As<代码>9-5

输出是9,因为它是一个最大堆,但我是否应该得到4作为输出,因为(9-5=4)?

9-5=4仅与比较器相关,以确定两个元素的比较结果是0、正数还是负数,如上所述。

岳研
2023-03-14

9-5=49pq的优先级。peek()返回值,而不是优先级

newpriorityqueue

所以9-5=4大于5-9=-4

因此值9将是第一个值。

 类似资料:
  • 我有学生类的数组。学生类有两个字段1.private最后的字符串firstName;2.private最后的布尔值是当前; 如果学生处于非活动状态,在学生类中出现的检查当前api将给出错误的值。 下面是我的DTO课程。 现在我想知道最常见的不活跃学生的名字? 我想这样做,与平行流? 什么是并行流代码?

  • 本文向大家介绍请你说说Lamda表达式的优缺点。相关面试题,主要包含被问及请你说说Lamda表达式的优缺点。时的应答技巧和注意事项,需要的朋友参考一下 考察点:Java基础 优点:1. 简洁。2. 非常容易并行计算。3. 可能代表未来的编程趋势。 缺点:1. 若不用并行计算,很多时候计算速度没有比传统的 for 循环快。(并行计算有时需要预热才显示出效率优势)2. 不容易调试。3. 若其他程序员没

  • 使用表达式 例5.1 使用表达式 #!/usr/bin/python # Filename: expression.py length =5 breadth =2 area = length * breadth print'Area is', area print'Perimeter is', 2* (length + breadth) (源文件:code/expression.py) 输出 $

  • 问题内容: 哪个实现不太“繁重”:PriorityQueue或排序的LinkedList(使用Comparator)? 我想对所有项目进行排序。插入将非常频繁,有时我将必须运行所有列表以进行一些操作。 问题答案: A 是最糟糕的选择。要么使用(或更一般地说,是一个实现者),要么。如果确实使用列表,则仅在遍历列表内容之前对其进行排序,而不是在每次插入之后对其进行排序。 有一点要注意的是,迭代器 不

  • 在阅读了关于表达式的这个极好的答案之后,我尝试将我的<code>平面图</code>转换为表达式</code>的<code>。 然后,for-expression。 我得到一个编译时错误 我的for表达式怎么了?

  • 你所编写的大多数语句(逻辑行)都包含了表达式(Expressions)。一个表达式的简单例子便是 2+3。表达式可以拆分成运算符(Operators)与操作数(Operands)。 运算符(Operators)是进行某些操作,并且可以用诸如 + 等符号或特殊关键词加以表达的功能。运算符需要一些数据来进行操作,这些数据就被称作操作数(Operands)。在上面的例子中 2 和 3 就是操作数。 运算