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, remove
containsAll, isEmpty, removeAll, retainAll, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, stream
public 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.