Personnalisation de l'ordre de tri dans une PriorityQueue
Une PriorityQueue est une structure de données utile qui maintient un ordre trié de ses éléments. Par défaut, il trie en fonction de l'ordre naturel de ses éléments. Pour personnaliser cet ordre, vous pouvez utiliser un Comparator.
Utiliser un Comparator
Le constructeur PriorityQueue a une surcharge qui prend un Comparator comme argument. Ce comparateur définit les critères de tri de la file d'attente. Par exemple, considérons une PriorityQueue qui trie les chaînes en fonction de leur longueur :
Comparator<String> comparator = new StringLengthComparator(); PriorityQueue<String> queue = new PriorityQueue<>(10, comparator);
Implémentation du comparateur
La classe StringLengthComparator implémente l'interface Comparator :
public class StringLengthComparator implements Comparator<String> { public int compare(String x, String y) { return x.length() - y.length(); } }
En comparant les longueurs de chaînes, le comparateur établit le tri souhaité order.
Offer vs. Add
Les méthodes d'offre et d'ajout ajoutent toutes deux un élément à la file d'attente. Cependant, offer renvoie true si l'élément est ajouté avec succès, tandis que add lève une exception si la file d'attente est pleine. Dans le cas d'une PriorityQueue, qui est illimitée, il n'y a pas de différence fonctionnelle entre les deux méthodes.
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!