Yo uso PriorityQueue
para la clasificación parcial de algunos datos. En particular, este es el código:¿Por qué PriorityQueue en Java no puede tener initialCapacity 0?
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
Por desgracia, cuando data
colección está vacía, el código de falla, porque PriorityQueue
no se puede pasar de cero como initialCapacity. ¿Cuáles son las razones detrás de esta decisión de diseño? ¿Por qué no puede haber un PriorityQueue
de 0?
UPD: Sé cómo evitar esto. Me gustaría saber por qué PriorityQueue
no incluye este código máximo (1, n). ¿Hay algún motivo o es solo un mal diseño de la API?
¿Qué quiere decir con "el código falla"? ¿Qué pasa exactamente? –
El constructor de PriorityQueue lanzará una IllegalArgumentException, consulte http://download.oracle.com/javase/6/docs/api/java/util/PriorityQueue.html –
Siempre puede preguntar a Joshua Bloch (http: //en.wikipedia .org/wiki/Joshua_Bloch). Él escribió PriorityQueue. –