Maison >Java >javaDidacticiel >Comment puis-je personnaliser l'ordre de tri d'une PriorityQueue ?

Comment puis-je personnaliser l'ordre de tri d'une PriorityQueue ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-13 08:40:10833parcourir

How Can I Customize the Sort Order of a PriorityQueue?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn