Queue集合中的PriorityQueue实现类
来源:互联网 发布:淘宝鹦鹉 编辑:程序博客网 时间:2024/05/30 04:23
Queue用于创建模拟队列这种数据结构,Queue接口中定义了如下几种方法:
方法
- void add(Object e):将指定元素加入此队列的尾部
- boolean offer(Object e):将指定元素加入此队列的尾部。当使用有容量限制的队列时,此方法更好用些。
- Object element():获取队列头部的元素,但是不删除该元素
- Object peek():获取队列头部的元素,但是不删除该元素。如果此队列为空,则返回null
- Object poll():获取队列头部的元素,并删除该元素。如果此队列为空,则返回null
Object remove():获取队列头部的元素,并删除该元素。
PriorityQueue实现类:
PriorityQueue是一个比较标准的队列实现类,因为PriorityQueue保存队列元素的顺序不是按照加入队列的顺序,而是按照元素的大小进行重新排序。
PriorityQueue不允许插入null元素,他还需要对队列元素进行排序,PriorityQueue有两种排序方式:自然排序:
采用自然顺序的PriorityQueue集合中的元素必须实现了Comparable接口,而且应该是统一个类的多个实例,否则可能导致ClassCastException异常
PriorityQueue pq = new PriorityQueue(); pq.offer(6); pq.offer(-9); pq.offer(20); pq.offer(18); System.out.println(pq); System.out.println(pq.poll()); System.out.println(pq); System.out.println(pq.poll()); System.out.println(pq); System.out.println(pq.poll()); System.out.println(pq); System.out.println(pq.poll()); System.out.println(pq);
定制排序
创建PriorityQueue队列时,传入一个Comparator对象,该对象负责对元素进行排序操作,此时不要求队列元素实现Comparable接口
PriorityQueue pq = new PriorityQueue((o1,o2) -> { int m1 = (int)o1; int m2 = (int)o2; return m1>m2?-1:m1<m2?1:0; }); pq.offer(6); pq.offer(-9); pq.offer(20); pq.offer(18); System.out.println(pq);
阅读全文
0 0
- Queue集合中的PriorityQueue实现类
- [疯狂Java]集合:Queue、PriorityQueue
- JAVA中的Queue与PriorityQueue
- Queue+PriorityQueue
- java集合框架之List------03_03 Queue PriorityQueue ArrayDeque
- Queue LifoQueue and PriorityQueue
- java集合类深入分析之PriorityQueue
- java集合类深入分析之PriorityQueue
- Lucene中的优先PriorityQueue排序实现
- 黑马程序员——Java集合框架—Queue—PriorityQueue
- java collections 集合基础学习 ArrayList,LinkedList, HashSet, TreeSet, HashMap, Stack,Queue,PriorityQueue
- Java常见集合框架(十六):Queue之DelayQueue、PriorityQueue、PriorityBlockingQueue
- MinHeap MaxHeap using Queue (PriorityQueue)
- Java Queue系列之PriorityQueue
- python模块学习(queue模块的Queue类、PriorityQueue类和LifoQueue类)
- java集合之PriorityQueue
- Java集合之PriorityQueue
- java集合之PriorityQueue
- 关于字符串长度、字符串逆序的相关程序
- C++学习笔记之SOCKET编程
- 直方图均衡化算法原理与实现
- Linux学习笔记
- 深入JVM内存区域
- Queue集合中的PriorityQueue实现类
- 理解ResNet结构与TensorFlow代码分析
- 手动无限轮播
- 【CQOI2017】小Q的棋盘
- java成长之路(三)---数组
- JavaEE 中DEBUG模式的设计
- 基于Docker搭建ActiveMQ的高可用集群
- oracle取出每个分组的第一条记录
- js格式化小数,保留指定长度是截取,不是四舍五入