E -元素举行此集合中的类型
public class PriorityQueue<E> extends AbstractQueue<E> implements Serializable
Comparator施工时间,这取决于使用哪个构造函数。一个优先队列不允许
null元素。依靠自然排序的优先级队列也不允许插入不可比较的对象(这样做可能导致
ClassCastException)。
此队列的头相对于指定的排序是最小的元素。如果多个元素被绑定为最小值,头部是这些元素的一个,关系被任意地打破。队列检索操作poll,remove,peek,和element访问在队列的头元素。
一个优先队列是无界的,但有一个内部容量管理用于存储在队列中的元素的数组的大小。它总是至少和队列大小一样大。当元素被添加到优先级队列中时,它的容量会自动增长。未指定增长策略的细节。
这个类和它的迭代器实现所有的可选方法的Collection和Iterator接口。方法iterator()提供的迭代器不能保证遍历优先级队列的元素在任何特定的顺序。如果你需要有序遍历,考虑使用Arrays.sort(pq.toArray())。
请注意,此实现不同步。多线程不能访问PriorityQueue实例同时如果线程修改队列。相反,使用线程安全类PriorityBlockingQueue。
注:实施实现了O(log(n))的方法(offer入队和出队时,poll,remove()和add);为remove(Object)和contains(Object)方法线性时间;并对检索方法的时间常数(peek,element,和size)。
这个班的一员 Java Collections Framework。
| Constructor and Description |
|---|
PriorityQueue()
创建一个默认的初始容量
PriorityQueue(11),命令其元素按其
natural ordering。
|
PriorityQueue(Collection<? extends E> c)
创建一个
PriorityQueue包含在指定集合的元素。
|
PriorityQueue(Comparator<? super E> comparator)
创建一个默认的初始容量和它的元素是按指定的比较器
PriorityQueue。
|
PriorityQueue(int initialCapacity)
创建一个具有指定的初始容量,命令其元素按其
natural ordering
PriorityQueue。
|
PriorityQueue(int initialCapacity, Comparator<? super E> comparator)
创建一个具有指定的初始容量,命令其元素根据指定的比较器
PriorityQueue。
|
PriorityQueue(PriorityQueue<? extends E> c)
创建一个
PriorityQueue包含指定的优先级队列中的元素。
|
PriorityQueue(SortedSet<? extends E> c)
创建一个
PriorityQueue含有指定排序的集合中的元素。
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
add(E e)
将指定的元素插入到该优先级队列中。
|
void |
clear()
从这个优先级队列中移除所有的元素。
|
Comparator<? super E> |
comparator()
返回用于为该队列中的元素的比较,或
null如果这个队列是根据其元素的
natural ordering排序。
|
boolean |
contains(Object o)
返回
true如果此队列包含指定的元素。
|
Iterator<E> |
iterator()
返回此队列中元素的迭代器。
|
boolean |
offer(E e)
将指定的元素插入到该优先级队列中。
|
E |
peek()
检索,但不删除,这个队列头,或返回
null如果队列为空。
|
E |
poll()
检索并移除此队列的头,或返回
null如果队列为空。
|
boolean |
remove(Object o)
从该队列中移除指定元素的一个实例,如果它是存在的。
|
int |
size()
返回此集合中的元素的数目。
|
Spliterator<E> |
spliterator()
创建一个后期绑定和快速失败
Spliterator在队列中的元素。
|
Object[] |
toArray()
返回一个包含此队列中所有元素的数组。
|
<T> T[] |
toArray(T[] a)
返回包含此队列中的所有元素的数组;返回数组的运行时类型是指定的数组的运行时类型。
|
addAll, element, removecontainsAll, isEmpty, removeAll, retainAll, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitcontainsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, streampublic PriorityQueue()
PriorityQueue(11),命令其元素按其
natural ordering。
public PriorityQueue(int initialCapacity)
PriorityQueue。
initialCapacity -优先级队列的初始容量
IllegalArgumentException -如果
initialCapacity小于1
public PriorityQueue(Comparator<? super E> comparator)
PriorityQueue。
comparator -比较器可用于订单优先级队列。如果
null,元素的
natural ordering将使用。
public PriorityQueue(int initialCapacity,
Comparator<? super E> comparator)
PriorityQueue。
initialCapacity -优先级队列的初始容量
comparator -比较器可用于订单优先级队列。如果
null,元素的
natural ordering将使用。
IllegalArgumentException -如果
initialCapacity小于1
public PriorityQueue(Collection<? extends E> c)
PriorityQueue包含在指定集合的元素。如果指定集合的一个实例
SortedSet或是另一个
PriorityQueue,优先级队列将按相同的顺序。否则,这个优先级队列将按其元素的
natural ordering。
c的元素都被放置到优先级队列集合
ClassCastException -如果不能指定集合的元素是互相比较根据优先级队列的排序
NullPointerException -如果指定集合或其任何元素都是空的
public PriorityQueue(PriorityQueue<? extends E> c)
PriorityQueue包含指定的优先级队列中的元素。此优先级队列将按照给定优先级队列的相同顺序排列。
c -优先级队列的元素都被放置到优先级队列
ClassCastException -如果
c元素不能互相比较根据
c订货
NullPointerException -如果指定的优先级队列或其任何元素都是空的
public PriorityQueue(SortedSet<? extends E> c)
PriorityQueue含有指定排序的集合中的元素。此优先级队列将按照给定的排序集的顺序排列。
c -排序的元素都被放置到优先级队列
ClassCastException如果元素指定排序集无法相比的一个根据排序的排序
NullPointerException -如果指定的排序集或其任何元素都是空的
public boolean add(E e)
add 接口
Collection<E>
add 接口
Queue<E>
add 方法重写,继承类
AbstractQueue<E>
e -元素添加
true(由
Collection.add(E)指定)
ClassCastException如果不能指定元素将按照优先级队列的排序优先级队列元素相比,目前
NullPointerException -如果指定元素为null
public boolean offer(E e)
offer 接口
Queue<E>
e -元素添加
true(由
Queue.offer(E)指定)
ClassCastException如果不能指定元素将按照优先级队列的排序优先级队列元素相比,目前
NullPointerException -如果指定元素为null
public boolean remove(Object o)
e这样
o.equals(e),如果此队列包含一个或多个这样的元素。返回
true当且仅当此队列包含指定元素(或等价地,如果调用的结果这个队列改变)。
remove 接口
Collection<E>
remove 方法重写,继承类
AbstractCollection<E>
o元素被从队列中删除,如果存在
true如果调用的结果改变了这个队列
public boolean contains(Object o)
true如果此队列包含指定的元素。更正式地说,返回
true当且仅当该队列包含至少一个元素
e这样
o.equals(e)。
contains 接口
Collection<E>
contains 方法重写,继承类
AbstractCollection<E>
o对象需要检查该队列中的遏制
true如果此队列包含指定的元素
public Object[] toArray()
返回的数组将是“安全”的,在这个队列中没有引用它的引用。(换句话说,这种方法必须分配一个新的数组)。因此,调用方可以自由修改返回的数组。
此方法作为基于数组和基于集合的原料药之间的桥梁。
toArray 接口
Collection<E>
toArray 方法重写,继承类
AbstractCollection<E>
public <T> T[] toArray(T[] a)
如果队列符合指定数组中剩余的空间(即数组比队列,数组中的元素)立即采集结束后的元素设置为null。
像toArray()方法,该方法作为之间的桥梁,基于阵列和基于集合API。此外,该方法允许对输出数组的运行时类型的精确控制,并在某些情况下,可用于节省分配成本。
假设是已知x队列只包含字符串。下面的代码可以用来倾倒排队到新分配的数组String:
String[] y = x.toArray(new String[0]);注意
toArray(new Object[0])是相同的功能,
toArray()。
toArray 接口
Collection<E>
toArray 方法重写,继承类
AbstractCollection<E>
T -数组的运行时类型包含集合
a -进入队列的元素被存储数组,如果它足够大;否则,一个新的运行时类型相同的数组分配给这个目的。
ArrayStoreException -如果指定数组的运行时类型不是超队伍中每个元素运行时类型
NullPointerException -如果指定的数组是空的
public Iterator<E> iterator()
iterator 接口
Iterable<E>
iterator 接口
Collection<E>
iterator 方法重写,继承类
AbstractCollection<E>
public int size()
Collection
size 接口
Collection<E>
size 方法重写,继承类
AbstractCollection<E>
public void clear()
clear 接口
Collection<E>
clear 方法重写,继承类
AbstractQueue<E>
public Comparator<? super E> comparator()
null如果这个队列是根据其元素的
natural ordering排序。
null如果这个队列是根据元素的自然顺序排序
public final Spliterator<E> spliterator()
Spliterator在队列中的元素。
报告的Spliterator Spliterator.SIZED,Spliterator.SUBSIZED,和Spliterator.NONNULL。重写实现应记录附加特征值的报告。
spliterator 接口
Iterable<E>
spliterator 接口
Collection<E>
Spliterator
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.