Introduction
PriorityQueue, une structure de données fondamentale en Java, fournit un moyen efficace pour gérer les éléments ordonnés selon leur priorité. Cependant, le mécanisme de tri par défaut peut ne pas toujours correspondre à l'ordre de tri souhaité.
Ordre de tri personnalisé
Pour spécifier un ordre de tri personnalisé pour une PriorityQueue, utilisez le constructeur surcharge qui prend un Comparator super E> comparateur. Transmettez un comparateur qui compare les éléments en fonction de l'ordre de tri souhaité.
Implémentation du comparateur
Le comparateur doit implémenter la méthode de comparaison pour spécifier la logique de comparaison. La méthode prend deux éléments et renvoie un entier indiquant l'ordre relatif :
Exemple
Considérons un exemple dans lequel nous souhaitons trier une PriorityQueue de chaînes par longueur de chaîne dans l'ordre croissant. Voici un exemple de comparateur et d'utilisation de PriorityQueue :
import java.util.*; class StringLengthComparator implements Comparator<String> { @Override public int compare(String x, String y) { return x.length() - y.length(); // Sort by ascending length } } ... Comparator<String> comparator = new StringLengthComparator(); PriorityQueue<String> queue = new PriorityQueue<>(10, comparator); queue.add("short"); queue.add("very long indeed"); queue.add("medium");
add vs. offer
Add et offer sont tous deux des implémentations de méthodes dans l'interface PriorityQueue. Bien qu'ils puissent potentiellement se comporter différemment en général, il n'y a aucune différence pratique dans le contexte de PriorityQueue, car il est illimité.
Sortie
La PriorityQueue fournira des éléments dans l'ordre de tri spécifié. Dans l'exemple ci-dessus, le résultat serait :
short medium very long indeed
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!