Я использую PriorityQueue
для частичной сортировки некоторых данных. В частности, это код:
Collection<Data> data = ...;
PriorityQueue<Data> queue = new PriorityQueue<Data>(data.size(), dataComparator);
queue.addAll(data);
// iterate over queue with remove() until we have as much data as we need or until queue is empty
К сожалению, когда коллекция data
пуста, код не работает, потому что PriorityQueue
нельзя передать ноль в качестве initialCapacity. Каковы причины этого дизайнерского решения? Почему не может быть нулевого размера PriorityQueue
?
UPD: Я знаю, как обойти это. Я бы хотел чтобы узнать, почему PriorityQueue
не включает в себя этот max (1, n) код - есть ли какие-то причины или это просто плохой дизайн API?