Personnalisation du tri PriorityQueue avec comparateur
PriorityQueues offre des capacités de tri, mais pour spécifier l'ordre de tri, une fonction de comparaison personnalisée doit être implémentée.
Comparateur pour le personnalisé Tri
Pour personnaliser le comportement de tri, utilisez le constructeur PriorityQueue qui prend un Comparator
public class StringLengthComparator implements Comparator<String> { @Override public int compare(String x, String y) { return Integer.compare(x.length(), y.length()); } }
Exemple : Tri par longueur de chaîne
Considérez le code suivant :
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()); }
Ce code crée une PriorityQueue qui trie les chaînes en fonction de leur longueur, les chaînes plus courtes étant classées plus haut priorité.
Offre et méthodes d'ajout
Bien que "offer" et "add" soient des implémentations de méthodes d'interface différentes, elles ajoutent toutes deux un élément à PriorityQueue. Dans le cas de PriorityQueue, la méthode offer appelle simplement la méthode add. Les deux méthodes ont le potentiel de lever une exception si PriorityQueue est pleine et incapable d'accepter de nouveaux éléments.
Pour résumer, pour un tri personnalisé, implémentez une fonction de comparaison et transmettez-la comme argument au constructeur PriorityQueue. Cela permet un tri basé sur votre propre logique de comparaison, comme le tri par longueur de chaîne ou toute autre métrique souhaitée.
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!