java集合之PriorityQueue
来源:互联网 发布:爵士舞蹈教学软件 编辑:程序博客网 时间:2024/06/15 21:30
public class PriorityQueue<E> extends AbstractQueue<E> implements java.io.Serializable
1,内部使用数组实现的二叉堆存储元素,初始容量为11.
2,通过比较器进行排序.保证堆顶永远为权值最小的元素.
3,add()和offer(),在PriorityQueue里是一样的
在数组末尾增加元素,然后用siftUpComparable()调整,小于父节点就交换.
private void siftUpComparable(int var1, E var2) { Comparable var3; int var4; for(var3 = (Comparable)var2; var1 > 0; var1 = var4) { var4 = var1 - 1 >>> 1; //父节点的下标 Object var5 = this.queue[var4]; if(var3.compareTo(var5) >= 0) { break; } this.queue[var1] = var5; } this.queue[var1] = var3;}4,poll(),取出堆顶元素,然后siftDownComparable()进行调整,将权值最小的元素调整到堆顶
private void siftDownComparable(int var1, E var2) { Comparable var3 = (Comparable)var2; int var5; for(int var4 = this.size >>> 1; var1 < var4; var1 = var5) { var5 = (var1 << 1) + 1; Object var6 = this.queue[var5]; int var7 = var5 + 1; if(var7 < this.size && ((Comparable)var6).compareTo(this.queue[var7]) > 0) { var5 = var7; var6 = this.queue[var7]; } if(var3.compareTo(var6) <= 0) { break; } this.queue[var1] = var6; } this.queue[var1] = var3;}5,里面有顺序迭代器Iterator和并行迭代器Spliterator(java 8新增)
阅读全文
0 0
- java集合之PriorityQueue
- Java集合之PriorityQueue
- java集合之PriorityQueue
- 深入Java集合系列之五:PriorityQueue
- java集合类深入分析之PriorityQueue
- java集合类深入分析之PriorityQueue
- 深入Java集合系列之五:PriorityQueue
- java集合框架之List------03_03 Queue PriorityQueue ArrayDeque
- JAVA学习---集合系列---PriorityQueue
- [疯狂Java]集合:Queue、PriorityQueue
- Java之PriorityQueue
- Java源码阅读之PriorityQueue
- 深入学习Java之PriorityQueue
- Java Queue系列之PriorityQueue
- Java常见集合框架(十六):Queue之DelayQueue、PriorityQueue、PriorityBlockingQueue
- java之_队列(PriorityQueue 优先级队列)
- java PriorityQueue
- PriorityQueue<> JAVA
- 安装mysql时 mysqld install命令无法通过
- vue钩子函数(软文)
- NSData dataWithContentsOfFile 返回值为nil
- Invenio安装步骤(二)
- 《Hadoop基础教程》之初识Hadoop
- java集合之PriorityQueue
- c++和c#部分类型对照表
- 在线更改MySQL表结构工具pt-online-schema-change
- 存储器原理及历史
- 如何用命令将本地项目上传到git
- 学习淘淘商城第一百零七课(Mycat的数据库分片)
- Spring Framework 官方jar包下载
- 实战操作主机角色转移,Active Directory系列之十
- [内核同步]自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析