java集合——队列和双端队列+优先级队列

【0】README

0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java集合——队列和双端队列+优先级队列 的相关知识;
0.2) for full source code , please visit https://github.com/pacosonTang/core-java-volume/blob/master/chapter13/DequeTest.java + https://github.com/pacosonTang/core-java-volume/blob/master/chapter13/PriorityQueueTest.java


【1】双端队列:可以让人们有效地在头部和尾部同时添加和删除元素。

1.0) Deque API are as follows :

  • java.util.Interface Deque
    Type Parameters:
    E - the type of elements held in this collection
  • All Superinterfaces:
    Collection, Iterable, Queue
  • All Known Subinterfaces:
    BlockingDeque
  • All Known Implementing Classes:
    ArrayDeque, ConcurrentLinkedDeque, LinkedBlockingDeque, LinkedList

1.1)在java SE6中, 引入了 Deque接口, 并由 ArrayDeque 和 LinkedList 类实现。 这两个类提供了双端队列, 而且在必要的时候增加队列长度;

  • API java.util.Queue 5.0
    boolean add(E element)
    boolean offer(E element)
    如果队列没有满, 将给定 的元素添加到这个双端队列的尾部并返回 true。 如果队列满了,第一个方法将抛出一个 IllegalStateException, 而第二个方法返回 false;

  • E remove() + E poll()
    假如队列不为空, 删除并返回这个队列头部的元素。如果队列为空,第一个方法抛出 NoSuchElementException, 而第二个方法返回 null;

  • E element() + E peek()
    如果队列不为空, 返回这个队列头部的元素, 但不删除。如果队里为空, 第一个方法将抛出一个 NoSuchElementException , 而第二个方法返回 null;
    (注意到, 以上方法中的第一个方法总是抛出异常, 而第二个方法返回null 或者 false)

  • API java.util.Deque 6
    void addFirst(E e)
    void addLast(E e)
    //以上两个方法出错,抛异常;
    boolean offerFirst(E e)
    boolean offerLast(E e)
    //以上两个方法出错,return false;
    将给定的对象添加到 双端队列的头部和尾部。 如果队列满了, 前两个方法将抛出一个 IllegalStateException, 而后面两个方法返回 false;

  • E removeFirst()
    E removeLast()
    //以上两个方法出错,抛异常;
    E pollFirst()
    E pollLast()
    //以上两个方法出错,return null;
    如果队列不为空, 删除并返回队列头部的元素;如果队列为空, 前面两个方法将抛出一个 NoSuchElementException, 而后面两个方法返回 null;

  • E getFirst()
    E getLast()
    //以上两个方法出错,抛异常;
    E peekFirst()
    E peekLast()
    //以上两个方法出错,return null;
    如果队列不为空, 返回队列头部的元素但不删除;如果队列为空, 前面两个方法将抛出一个 NoSuchElementException, 而后面两个方法返回 null;

  • API java.util.ArrayDeque 6
    ArrayDeque()
    ArrayDeque(int intialCapacity)
    用初始容量16或给定的初始容量构造一个无限双端队列;
    这里写图片描述


【2】优先级队列

  • java.util.Class PriorityQueue
  • java.lang.Object
  • java.util.AbstractCollection
    • java.util.AbstractQueue
      • java.util.PriorityQueue
  • Type Parameters:
    E - the type of elements held in this collection
  • All Implemented Interfaces:
    Serializable, Iterable, Collection, Queue

2.1)优先级队列中的元素可以按照任意顺序插入, 却总是按照排序的顺序检索;也就是说, 无论何时调用 remove方法, 总会获得当前优先队列中最小的元素;

  • 2.1.1)优先队列使用了一个高效的数据结构——堆。(详见数据结构 的堆,大根堆和小根堆)
  • 2.1.2)和TreeSet一样, 一个优先队列既可以保存实现了 Comparable接口的类对象, 也可以保存在构造器中提供比较器的对象;
  • 2.1.3)优先级队列的典型应用是任务调度。 每一个任务有一个优先级, 任务以随机顺序添加到队列中。 每当启动一个新的任务时, 都将优先级最高 的任务从队列中删除;

2.2)看个荔枝:
这里写图片描述
这里写图片描述

API java.util.PriorityQueue 5.0
PriorityQueue()
PriorityQueue(int initialCapacity)
PriorityQueue(int initialCapacity, Comparator<? super E> c)
构造一个优先队列, 并用指定 的比较器对元素进行排序;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java无效的源发行版_无效的Java

java无效的源发行版也许我可以被机器人代替进行代码审查。 有一些反馈我发现自己一遍又一遍。 这是我最不喜欢的一些&#xff1a; 通用代码结构 放弃其他 当if在两端return的else是多余的和不必要的创建缩进。 if (foo) { return bar; } else { return baz; } // should be…

oracle数值型转为char类型,PLSQL: Oracle函数to_char转化数字型指定小数点位数的技巧...

问题题出&#xff1a; 数字0.023 > 转化成字符串"0.023"问题难点&#xff1a;to_char&#xff0c;函数功能&#xff0c;就是将数值型或者日期型转化为字符型。比如最简单的应用&#xff1a;Select TO_CHAR(1.0123) FROM DUALSelect TO_CHAR(123) …

java之常用方法

一、数学函数 在System.Math类里面的函数 I、三角函数 sin(radians) 正弦函数 cos(radians) 余弦函数 tan(radians) 正切函数 toRadians(degree) 角度转为弧度 toDegree(radians) 弧度转为角度 asin(a) 反正弦函数 acos(a)…

java集合——映射表+专用集合映射表类

【0】README 0.1&#xff09; 本文描述转自 core java volume 1&#xff0c; 源代码为原创&#xff0c;旨在理解 java集合——映射表专用集合映射表类 的相关知识&#xff1b; 0.2&#xff09; for full source code , please visit https://github.com/pacosonTang/core-jav…

jstat分析_jstat –分析

jstat分析jstat是一个简单的实用工具&#xff0c;在JDK中存在&#xff0c;用于提供与JVM性能相关的统计信息&#xff0c;例如垃圾收集&#xff0c;编译活动。 jstat的主要优势在于&#xff0c;它可以在运行JVM且无需任何先决条件的情况下动态捕获这些指标。 这是什么意思&#…

oracle中execute函数,oracle Execute Immediate(sql语句)

慕尼黑的夜晚无繁华Example 1:Output:ABCDECLARE TYPE var_typ IS TABLE OF VARCHAR2(4000);cVars var_typ;cVar VARCHAR2(4000);BEGINEXECUTE IMMEDIATE SELECT A cc FROM dualUNIONSELECT B cc FROM dualUNIONSELECT C cc FROM dual BULK COLLECT INTO cVars; FOR i IN 1 .…

java之数组

一、声明数组 数组是引用类型&#xff0c;声明数组并没有分配空间&#xff0c;则该数组变量的值为null。 类型[] 数组名; 如&#xff1a;double[] data; 二、创建数组 类型[] 数组名new 类型[长度]; 数组创建&#xff0c;数组里面的元素会被赋值&#xff0c;数值型基本数据…

java集合——集合框架

【0】README 0.1&#xff09; 本文描述转自 core java volume 1&#xff0c; 源代码为原创&#xff0c;旨在理解 java集合——集合框架 的相关知识&#xff1b; 【1】集合框架 1.1&#xff09; java集合类库构成了集合类的矿建&#xff0c; 它为集合的实现者定义了大量的接口…

oracle密码不能重复用_重复码

oracle密码不能重复用介绍 在我们的Java应用程序中复制/粘贴代码通常不好&#xff0c;但是有时这是不可避免的。 例如&#xff0c;项目License3j在Feature类中为其支持的每种XXX类型提供了一个isXXX方法。 在这种情况下&#xff0c;我们做不到写 public boolean isBinary() { r…

oracle rman 用户,对Oracle数据库进行RMAN备份的Oracle数据库用户权限

在Oracle 12版本或者更高版本&#xff0c;Oracle备份用户需要具有SYSDBA或者SYSBACKUP权限在Oracle 11(包括11版本)以前&#xff0c;Oracle备份用户需要具有SYSDBA权限创建及授权用户权限命令示例如下&#xff1a;SQL>create user backupuser identified by oracle;SQL>g…

java之类

一、构造方法1)构造方法具有与类的相同名字2)构造方法没有返回值&#xff0c;甚至连void都没有3)创建新对象使用new&#xff0c;构造方法的作用就是初始化对象。格式为&#xff1a; [可见修饰符] 类名(参数表){}例如&#xff1a;public Myclass(){}普通方法&#xff1a; p…

pmml_再访PMML

pmml嗨伙计&#xff01; 从今年年初开始&#xff0c;就有了重新设计Drools PMML模块的计划。 在这篇文章中&#xff0c;我将描述我们将如何处理它&#xff0c;目前的状态&#xff0c;未来发展的想法等&#xff0c;等等……敬请期待&#xff01; 背景 PMML是一个标准&#xff…

java集合——视图与包装器

【0】README 0.1&#xff09; 本文描述转自 core java volume 1&#xff0c; 源代码为原创&#xff0c;旨在理解 java集合——视图与包装器 的相关知识&#xff1b; 0.2&#xff09; for full source code , please visit https://github.com/pacosonTang/core-java-volume/b…

php把表单转为json保存,javascript – 使用jquery将表单数据保存到本地json文件中

我有一个带有一些输入字段的基本表单.我想在提交表单时将表单数据保存到json文件中.json文件中保存数据的格式应如下所示.[{"title":"some text","description":"some text","info":"some text","username&q…

java之包装类与BigInteger、BigDecimal

一、包装类 &#xff08;1&#xff09;包装类与原类型 Integer int 的包装类 Boolean boolean 的包装类 Character char的包装类 Double double的包装类 Float float 的包装类 Byte …

哈希值 哈希表_哈希杰森

哈希值 哈希表我最近写了一个简单的库&#xff0c;可预测地对json进行哈希处理 。 该实用程序基于出色的Jackson Json解析库构建 问题 我需要从相当大的基于json的内容生成的哈希值&#xff0c;以便稍后确定该内容是否发生了更改。 将json视为字符串不是格式化的选项&#xf…

新浪微博搜索php待遇,新浪微博面试

PHP技术基础1、合并数据的函数。我当时回答的是array_merge()&#xff0c;array_combine()(注意与前者的区分);当时面试官告诉我还可以使用 加号()2&#xff0c;判断一个IP地址是否合法。只让说一下思路&#xff1a;(1)用点分割.&#xff0c;$arrIp explore()&#xff1b;(2)判…

java集合——集合与数组间的转换+算法

【0】README 0.1&#xff09; 本文描述转自 core java volume 1&#xff0c; 源代码为原创&#xff0c;旨在理解 java集合——集合与数组间的转换算法 的相关知识&#xff1b; 0.2&#xff09; for full source code , please visit https://github.com/pacosonTang/core-jav…

java之String

一、String类的特性 String对象是不可变的&#xff0c;字符串一旦创建&#xff0c;就不可以改变。二、构造字符串字符串直接量String anew String("字符串直接量"); 字符数组String bnew String(chars);字符串直接量赋值&#xff0c;java把字符串直接量看作String对象…

java记录目录树_Java记录

java记录目录树https://openjdk.java.net/jeps/359概述了Java的新功能&#xff0c;该功能可能会/将在某些将来的Java版本中实现。 JEP建议使用一种新的“类别”&#xff1a;记录。 JEP中的示例内容如下&#xff1a; record Range( int lo, int hi) { public Range { if (lo >…