A Guide to PriorityQueue

这篇具有很好参考价值的文章主要介绍了A Guide to PriorityQueue。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原文链接:https://blog.csdn.net/ohwang/article/details/116934308

A Guide to PriorityQueue,集合,算法题,算法

PriorityQueue 又叫优先队列

底层实现

PriorityQueue是用数组实现,数组大小可以动态增加,容量无限。
优先队列采用的是堆排序(默认为最小堆)。堆排序只能保证根是最大(最小),整个堆并不是有序的。

特性

1、非线程安全。线程安全可以用PriorityBlockingQueue
2、不允许使用 null 元素。
3、 可以在构造函数中指定如何排序文章来源地址https://www.toymoban.com/news/detail-702719.html

# 默认的初始容量(11)
# 使用指定的初始容量创建一个 PriorityQueue,并根据其自然顺序来排序其元素。
PriorityQueue(int initialCapacity)

# 使用指定的初始容量创建一个 PriorityQueue,并根据指定的比较器comparator来排序其元素。
PriorityQueue(int initialCapacity, Comparator<? super E> comparator)

使用

默认升序

# 默认升序
PriorityQueue<Integer> queue2 = new PriorityQueue<>(10);
queue2.offer(11);
queue2.offer(9);

int len = queue2.size();
for (int i = 0; i < len; i++) {
    System.out.println(queue2.poll());
}
//输出 9 11

自定义降序

# 自定义降序
PriorityQueue<Integer> queue = new PriorityQueue<>(10, (a, b) -> b - a);
queue.offer(13);
queue.offer(9);

int len1 = queue.size();
for (int i = 0; i < len1; i++) {
    System.out.println(queue.poll());
}
//输出 13 9

自定义业务排序

# 模拟业务使用
PriorityQueue<People> queue = new PriorityQueue<>(11, (p1, p2) -> p2.age - p1.age);
for (int i = 1; i <= 10; i++) {
    queue.add(new People("张" + i, (new Random().nextInt(100))));
}
while (!queue.isEmpty()) {
    System.out.println(queue.poll().toString());
}

class People {
    String name;
    int age;
    public People(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String toString() {
        return "姓名:" + name + " 年龄:" + age;
    }
}

姓名:张9 年龄:67
姓名:张1 年龄:66
姓名:张8 年龄:65
姓名:张7 年龄:54
姓名:张4 年龄:48
姓名:张2 年龄:41
姓名:张5 年龄:39
姓名:张3 年龄:26
姓名:张6 年龄:11
姓名:张10 年龄:0

到了这里,关于A Guide to PriorityQueue的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spark and SparkR: A Comprehensive Guide to R for Spark Development

    Spark and SparkR: A Comprehensive Guide to R for Spark Development\\\" 是一本详细的指南,旨在帮助读者深入了解如何使用 R 语言进行 Spark 开发。在大数据时代,Spark 作为一个流行的大数据处理框架,已经成为许多企业和研究机构的首选。而 R 语言则是数据分析和机器学习领域的一种流行的工

    2024年02月21日
    浏览(36)
  • Apache Spark and Stream Processing: A Comprehensive Guide to RealTime Data Processing

    大数据时代,实时数据处理成为了企业和组织中不可或缺的技术。随着互联网的发展,数据的产生和传输速度越来越快,传统的批处理方式已经无法满足实时需求。因此,实时数据处理技术逐渐成为了关注的焦点。 Apache Spark是一个开源的大数据处理框架,它可以处理批量数据

    2024年04月09日
    浏览(88)
  • React Native and Native Modules: A Developer's Guide to Bridging the Gap

    React Native is a popular framework for building cross-platform mobile applications using JavaScript and React. It allows developers to write code once and deploy it on both iOS and Android platforms. Native modules are an essential part of React Native, as they provide access to native APIs and platform-specific features. In this guide, we will explore the

    2024年04月11日
    浏览(41)
  • Sitecore10 Demo演示环境Azure一键部署(Step By Step Guide to installing Sitecore10 in Azure Paas)

    本文演示Sitecore XP Single(XP0)在Azure上的一键部署,即“30分钟生成Sitecore演示环境”的一环。 关于XP(即Sitecore Experience Platform) roles的相关介绍移步 XP Single配置主要用来开发和测试: Four Sitecore roles: Content Delivery, Content Management, Processing, and Reporting as a single WebApp instance.(cd,

    2023年04月25日
    浏览(46)
  • A Beginner‘s Guide to Apache Kafka: 什么是Kafka、它为什么如此受欢迎、它在哪些场景下可以应用、以及一些基本概念和术语

    作者:禅与计算机程序设计艺术 Apache Kafka(以下简称Kafka)是一个开源分布式流处理平台,它被设计用来实时传输大量的数据,从而能够实时的对数据进行处理并提取价值。本文通过梳理,引导读者了解什么是Kafka、它为什么如此受欢迎、它在哪些场景下可以应用、以

    2024年02月09日
    浏览(61)
  • 深入理解PriorityQueue的特性

    Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的 使用操作: 1.在我们使用优先级队列时,必须导入相应的包 2.PriorityQueue中放置的元素必须要能够比较大小,不能插入无法比较大小的对象,否

    2023年04月27日
    浏览(43)
  • Java语言---PriorityQueue与堆

    目录 一.堆 1.1堆的概念  1.2堆的存储方式 1.3堆的操作 1.3.1堆的创建 1.3.2代码的实现:            堆的插入元素            堆的删除 二、PriorityQueue    2.1概念   2.2性质   2.3PriorityQueue的创建构造  2.4PriorityQueue的操作方法 总结 😽个人主页:tq02的博客_CSDN博客-C语言,Jav

    2024年02月08日
    浏览(30)
  • 优先队列PriorityQueue

    前言 PriorityQueue这个队列不知道大家使用过吗,反正我用的很少,主要对它不是很了解,今天我带领大家剖析下PriorityQueue这个优先级队列。 PriorityQueue介绍 顾名思义,PriorityQueue是优先队列的意思。优先队列的作用是能保证每次取出的元素都是队列中权值最小的。这里牵涉到了

    2024年02月08日
    浏览(29)
  • 【Java】PriorityQueue--优先级队列

    目录  一、优先级队列  (1)概念 二、优先级队列的模拟实现 (1)堆的概念  (2)堆的存储方式   (3)堆的创建 堆向下调整 (4)堆的插入与删除 堆的插入  堆的删除 三、常用接口介绍 1、PriorityQueue的特性 2、PriorityQueue常用接口介绍   (1)优先级队列的构造 (2)插入

    2024年02月11日
    浏览(43)
  • Python - 优先队列(queue.PriorityQueue & heapq)

    目录 什么是优先队列 为什么需要优先队列? 优先队列是个啥? 优先队列的工作原理 Python实现一个优先队列 Python内置库中的queue.PriorityQueue的使用 基本操作 多条件优先级实现 Python内置库中的heapq heapq的常用操作 基于heapq实现一个优先队列类 为什么需要优先队列? 有一个小

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包