Thinking in Java [Java编程机制] 学习笔记 -- Priority Queue
来源:互联网 发布:交大网络教育学院登录 编辑:程序博客网 时间:2024/05/22 03:45
Priority Queue是优先级队列,也是我们平时说的堆,可以实现O(1)获取最大/最小元素,维护操作时间复杂度O(logN)
常用API,具体参见PriorityQueue:
PriorityQueue()
使用默认的初始容量(11)创建一个
PriorityQueue
,并根据其自然顺序对元素进行排序。PriorityQueue(Collection<? extends E> c)
创建包含指定 collection 中元素的
PriorityQueue
。PriorityQueue(int initialCapacity)
使用指定的初始容量创建一个
PriorityQueue
,并根据其自然顺序对元素进行排序。PriorityQueue(int initialCapacity, Comparator<? super E> comparator)
使用指定的初始容量创建一个
PriorityQueue
,并根据指定的比较器对元素进行排序。PriorityQueue(PriorityQueue<? extends E> c)
创建包含指定优先级队列元素的
PriorityQueue
。PriorityQueue(SortedSet<? extends E> c)
创建包含指定有序 set 元素的
PriorityQueue
。 boolean
add(E e)
将指定的元素插入此优先级队列。
void
clear()
从此优先级队列中移除所有元素。
Comparator<? super E>
comparator()
返回用来对此队列中的元素进行排序的比较器;如果此队列根据其元素的自然顺序进行排序,则返回
null
。 boolean
contains(Object o)
如果此队列包含指定的元素,则返回
true
。 Iterator<E>
iterator()
返回在此队列中的元素上进行迭代的迭代器。
boolean
offer(E e)
将指定的元素插入此优先级队列。
E
peek()
获取但不移除此队列的头;如果此队列为空,则返回 null。
E
poll()
获取并移除此队列的头,如果此队列为空,则返回 null。
boolean
remove(Object o)
从此队列中移除指定元素的单个实例(如果存在)。
int
size()
返回此 collection 中的元素数。
Object[]
toArray()
返回一个包含此队列所有元素的数组。
<T> T[]
toArray(T[] a)
返回一个包含此队列所有元素的数组;返回数组的运行时类型是指定数组的类型。
我们在使用时经常使用最大堆或者最小堆。PriorityQueue默认是最小堆,如果需要使用最大堆,需要重写Comparator对象的compare函数,例子如下:
Comparator<Integer> cmp;cmp = new Comparator<Integer>() {public int compare(Integer e1, Integer e2) {return e2 - e1;}};Queue<Integer> q2 = new PriorityQueue<Integer>(5,cmp);
- Thinking in Java [Java编程机制] 学习笔记 -- Priority Queue
- Thinking in Java [Java编程机制] 学习笔记 -- final 关键字
- Thinking in Java [Java编程机制] 学习笔记 -- List / ArrayList
- Thinking in Java [Java编程机制] 学习笔记 -- 变量和对象
- Thinking in Java [Java编程机制] 学习笔记 -- 操作符Operator
- Thinking in Java [Java编程机制] 学习笔记 -- 初始化顺序Order of initialization
- Thinking In Java学习笔记
- Thinking in Java学习笔记
- thinking in java 学习笔记
- 《Thinking in java》学习笔记
- Thinking in Java学习笔记
- Thinking In Java学习笔记
- java学习笔记1-thinking in java
- java学习笔记2-thinking in java
- java学习笔记3-thinking in java
- Thinking in Java笔记
- Thinking in java 笔记
- thinking in java 笔记
- hdu1128 Self Numbers
- linux注册设备驱动的理解
- Linux文件系统十问
- QXL驱动分析(二)——FindAdapter
- WAIT TYPE:PAGEIOLATCH_SH
- Thinking in Java [Java编程机制] 学习笔记 -- Priority Queue
- js 验证 商品货号并批量生成
- Android中AppWidget详解
- 有关Eclipse的自动完成&代码整理
- HDU2650(高斯整数环)
- 近期小结( ——2013.8.16)
- [leetcode] Remove Duplicates from Sorted List
- Deep Learning(深度学习)学习笔记整理系列之(一)
- php过滤提交数据,防止sql注入攻击