栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java PriorityQueue的用法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java PriorityQueue的用法

Comparator源码

抽象方法

compare

int compare(T o1, T o2);

int compare(T o1, T o2) 是“比较o1和o2的大小”。返回“负数”,意味着“o1比o2小”;返回“零”,意味着“o1等于o2”;返回“正数”,意味着“o1大于o2”。

前 K 个高频元素

int[] 的第一个元素代表数组的值,第二个元素代表了该值出现的次数

  PriorityQueue queue = new PriorityQueue(new Comparator() {
            public int compare(int[] m, int[] n) {
                return m[1] - n[1];
            }
        });

解释:优先队列为最小堆,假设m[1]-n[1]大于0,对应m[1]>n[1],m>n,即m数组在二叉堆中排在n的下面。而m[1]>n[1],说明m出现的次数比n多,此时为最小堆

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

解释:lamda表示重写compare方法 

    public int compare(int[] a, int[] b) {
                return b[1] - a[1];
            }

优先队列为最小堆,假设b[1]-a[1]大于0,对应b[1]>a[1],a>b,即a数组在二叉堆中排在b数组的下面,而b[1]>a[1]说明b出现的次数比a多,此时为最大堆。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769252.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号