2015-06-22 58 views
2

我有一个简单的问题。我在我的项目中实施了PriorityQueue。我的问题是我可以设置固定大小为PriorityQueue是Java吗?如何在Java中将固定大小设置为PriorityQueue?

+3

号这是一个动态的成长基础上,我们把项目Collection'的'部分/添加。如果您正在寻找固定大小或编写自定义实现,请更好地使用类似数组的东西。 – kosa

+1

你会如何期望它的语义工作? –

+1

(如果你只是想获得特定集合的前k个元素,并且你可以使用第三方库,可以考虑使用Guava的'Optional.leastOf' /'greatestOf',它比使用' PriorityQueue'。) –

回答

4

如Oracle文档这里指出, http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html

优先级队列是无界的,但具有管理用于存储队列中的元素的数组的大小的内部容量。它总是至少与队列大小一样大。随着元素被添加到优先级队列中,其容量会自动增加。增长政策的细节没有说明。

可能的解决方法可能是,你可以执行任何操作之前检查大小:

if (q.size() <= QUEUE_LIMIT) 
    //your code 
相关问题