Anpassen der PriorityQueue-Sortierung mit Comparator
PriorityQueues bieten Sortierfunktionen, aber um die Sortierreihenfolge anzugeben, muss eine benutzerdefinierte Komparatorfunktion implementiert werden.
Komparator für Benutzerdefiniert Sortieren
Um das Sortierverhalten anzupassen, verwenden Sie den PriorityQueue-Konstruktor, der einen Comparator
public class StringLengthComparator implements Comparator<String> { @Override public int compare(String x, String y) { return Integer.compare(x.length(), y.length()); } }
Beispiel: Sortieren nach String-Länge
Bedenken Sie den folgenden Code:
Comparator<String> comparator = new StringLengthComparator(); PriorityQueue<String> queue = new PriorityQueue<>(10, comparator); queue.add("short"); queue.add("very long indeed"); queue.add("medium"); while (!queue.isEmpty()) { System.out.println(queue.remove()); }
Dieser Code Erstellt eine PriorityQueue, die Zeichenfolgen nach ihrer Länge sortiert, wobei kürzere Zeichenfolgen weiter oben angezeigt werden Priorität.
Offer vs. Add Methods
Während „offer“ und „add“ unterschiedliche Implementierungen von Schnittstellenmethoden sind, fügen beide der PriorityQueue ein Element hinzu. Im Fall von PriorityQueue ruft die Angebotsmethode einfach die Add-Methode auf. Beide Methoden können möglicherweise eine Ausnahme auslösen, wenn die PriorityQueue voll ist und keine neuen Elemente akzeptieren kann.
Um es zusammenzufassen: Implementieren Sie für eine benutzerdefinierte Sortierung eine Komparatorfunktion und übergeben Sie sie als Argument an den PriorityQueue-Konstruktor. Dies ermöglicht eine Sortierung basierend auf Ihrer eigenen Vergleichslogik, z. B. Sortieren nach String-Länge oder einer anderen gewünschten Metrik.
Das obige ist der detaillierte Inhalt vonWie kann ich die Sortierung einer Java PriorityQueue anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!