Io uso PriorityQueue
per l'ordinamento parziale di alcuni dati. In particolare, questo è il codice:Perché PriorityQueue in Java non può avere 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
Sfortunatamente, quando data
raccolta è vuota, il codice non riesce, perché PriorityQueue
non possono essere passati zero initialCapacity. Quali sono le ragioni alla base di questa decisione di progettazione? Perché non ci può essere un PriorityQueue
dimensioni 0?
UPD: So come aggirare questo. Mi piacerebbe sapere perché lo PriorityQueue
non include questo max (1, n) codice al suo interno - ci sono dei motivi o è solo una cattiva progettazione dell'API?
Cosa intendi con "il codice non funziona"? Cosa succede esattamente? –
Il costruttore di PriorityQueue genererà un IllegalArgumentException, vedi http://download.oracle.com/javase/6/docs/api/java/util/PriorityQueue.html –
Puoi sempre chiedere a Joshua Bloch (http: //en.wikipedia .org/wiki/Joshua_Bloch). Ha scritto PriorityQueue. –