Heim >Java >javaLernprogramm >Wie kann ich die Sortierreihenfolge einer PriorityQueue anpassen?

Wie kann ich die Sortierreihenfolge einer PriorityQueue anpassen?

Susan Sarandon
Susan SarandonOriginal
2024-12-13 08:40:10779Durchsuche

How Can I Customize the Sort Order of a PriorityQueue?

Anpassen der Sortierreihenfolge in einer PriorityQueue

Eine PriorityQueue ist eine nützliche Datenstruktur, die eine sortierte Reihenfolge ihrer Elemente beibehält. Standardmäßig wird nach der natürlichen Reihenfolge seiner Elemente sortiert. Um diese Reihenfolge anzupassen, können Sie einen Comparator verwenden.

Verwendung eines Comparators

Der PriorityQueue-Konstruktor verfügt über eine Überladung, die einen Comparator als Argument verwendet. Dieser Komparator definiert die Sortierkriterien für die Warteschlange. Betrachten Sie beispielsweise eine PriorityQueue, die Zeichenfolgen nach ihrer Länge sortiert:

Comparator<String> comparator = new StringLengthComparator();
PriorityQueue<String> queue = new PriorityQueue<>(10, comparator);

Comparator-Implementierung

Die StringLengthComparator-Klasse implementiert die Comparator-Schnittstelle:

public class StringLengthComparator implements Comparator<String> {
    public int compare(String x, String y) {
        return x.length() - y.length();
    }
}

Durch den Vergleich der Stringlängen ermittelt der Komparator die gewünschte Sortierung bestellen.

Angebot vs. Hinzufügen

Die Angebots- und die Add-Methode fügen beide ein Element zur Warteschlange hinzu. Allerdings gibt offer true zurück, wenn das Element erfolgreich hinzugefügt wurde, während add eine Ausnahme auslöst, wenn die Warteschlange voll ist. Im Falle einer PriorityQueue, die unbegrenzt ist, gibt es keinen funktionalen Unterschied zwischen den beiden Methoden.

Das obige ist der detaillierte Inhalt vonWie kann ich die Sortierreihenfolge einer PriorityQueue anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn