Java中的PriorityQueue是一個基于優先級的隊列,它實現了Queue接口。PriorityQueue中的元素按照自然順序(對于可以比較的元素)或者根據構造隊列時提供的Comparator進行排序。以下是PriorityQueue的一些常用方法:
add(E e)
: 向隊列中添加一個元素。時間復雜度為O(log n)。offer(E e)
: 向隊列中添加一個元素,如果隊列已滿,則返回false。這個方法在添加元素時不會拋出異常,而是返回一個布爾值表示操作是否成功。時間復雜度為O(log n)。poll()
: 移除并返回隊列中的第一個元素。如果隊列為空,則返回null。時間復雜度為O(log n)。peek()
: 返回隊列中的第一個元素,但不移除它。如果隊列為空,則返回null。時間復雜度為O(log n)。element()
: 返回隊列中的第一個元素,但不移除它。這個方法的時間復雜度為O(1),因為它直接訪問了隊列的第一個元素。但是,這個方法的實現依賴于具體的數據結構,所以在不同的實現中可能會有不同的時間復雜度。size()
: 返回隊列中的元素數量。時間復雜度為O(1)。clear()
: 清空隊列。時間復雜度為O(n),其中n是隊列中的元素數量。contains(Object o)
: 判斷隊列中是否包含指定的元素。時間復雜度為O(n),因為在最壞的情況下,需要遍歷整個隊列來查找元素。需要注意的是,以上方法的時間復雜度都是基于堆的性質得出的。在PriorityQueue中,元素的插入和刪除操作都是在堆的頂部進行的,所以時間復雜度為O(log n)。