如何检查优先级队列的容量?

时间:2018-04-20 09:18:23

标签: java collections

在Vector中有def create file = Paperclip.io_adapters.for(params[:photo][:image]) file.original_filename = params[:photo][:filename] @photo = Photo.new(file: file, user: current_user) @photo.save end 方法来检查当前容量但在PriorityQueue中如何检查相同,没有现成的方法可用于 Queue / PriorityQueue就像在Vector中一样。如果我试图实现Vector方法,它会显示大小而不是Queue的容量。

capacity()

2 个答案:

答案 0 :(得分:2)

来自https://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html

上的文档
  

优先级队列是无限制的,但具有内部容量,用于控制用于存储队列中元素的数组的大小。它始终至少与队列大小一样大。当元素添加到优先级队列时,其容量会自动增加。没有具体说明增长政策的细节。

这意味着没有特定的容量,它只有一个size()

答案 1 :(得分:0)

尝试以下代码:

System.out.println("Capacity :"+ findCapacity(pq));


static int findCapacity(PriorityQueue<Character> pq) throws Exception {

    Field field = PriorityQueue.class.getDeclaredField ("queue");

    field.setAccessible(true);

    return ((Object[]) field.get(pq)).length;

}

Result:
Capacity :20