微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java 中的比较器和 PriorityQueue 如何工作?

如何解决Java 中的比较器和 PriorityQueue 如何工作?

这是我用来在Java中反转priorityQueue正常工作的代码。 但我不明白我放在括号内的 lambda 函数做了什么。有人可以解释一下。

PriorityQueue pq = new PriorityQueue((a,b) -> b - a);

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());
        
    }
} 

解决方法

比较函数是一个函数,当第一个参数应该在第二个之前排序时,必须返回任何小于 0 的值,当第二个参数应该在第二个参数之前排序时,任何大于 0 的值都必须返回first 和 0 如果两者在排序上是等价的。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。