2012-04-11 10 views
0

Sieht aus wie PriorityQueue ist eine LIFO-Struktur (wenn alle Elemente in ihm die gleiche Priorität haben), habe ich Recht?PriorityQueue Umfrage

public E poll() { 
    if (size == 0) 
     return null; 
    modCount++; 

    E result = (E) queue[1]; 
    queue[1] = queue[size]; 
    queue[size--] = null; // Drop extra ref to prevent memory leak 
    if (size > 1) 
     fixDown(1); 

    return result; 
} 
+0

Was ist Ihre Frage? – st0le

Antwort

0

Aus der Dokumentation:

Eine unbegrenzte Warteschlange Priorität basierend auf einer Priorität Heap. Die Elemente der Prioritätswarteschlange werden in Abhängigkeit von ihrer natürlichen Reihenfolge oder von einem zur Ausführungszeit der Warteschlange bereitgestellten Vergleicher geordnet, abhängig davon, welcher Konstruktor verwendet wird. Eine Prioritätswarteschlange lässt keine Null-Elemente zu. Eine Prioritätswarteschlange, die auf einer natürlichen Reihenfolge basiert, erlaubt auch nicht das Einfügen von nicht vergleichbaren Objekten (dies kann zu einer ClassCastException führen).

Der Kopf dieser Warteschlange ist das kleinste Element in Bezug auf die angegebene Reihenfolge. Wenn mehrere Elemente für den kleinsten Wert gebunden sind, ist der Kopf eines dieser Elemente - Bindungen sind willkürlich gebrochen. Die Warteschlangenabrufvorgänge rufen das Element am Kopf der Warteschlange ab, entfernen es, gucken und rufen das Element auf.

http://docs.oracle.com/javase/6/docs/api/java/util/PriorityQueue.html

Grundsätzlich gibt es immer eine „Priorität“, standardmäßig ist es die natürliche Ordnung der Elemente.

+0

Wie diese Zeile zu erklären ist –

+0

Wie zu erklären, Warteschlange [1] = Warteschlange [Größe]? das bringt das letzte Element zur Kopfposition. –

+0

Es ist einfacher, wenn Sie Ihre Frage aktualisieren, um etwas Spezifisches zu fragen. – pcalcao

1

Die Aussage im Javadoc, dass "Bindungen willkürlich gebrochen sind" bedeutet, dass die Antwort auf Ihre Frage "Nein" ist.