Maison >Java >javaDidacticiel >Comment puis-je personnaliser le tri d'une PriorityQueue Java ?

Comment puis-je personnaliser le tri d'une PriorityQueue Java ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-15 10:49:10773parcourir

How Can I Customize the Sorting of a Java PriorityQueue?

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 comme argument. Le comparateur fournit un mécanisme pour comparer les éléments et détermine l'ordre de tri. Voici comment implémenter un comparateur :

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!

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