Maison > Java > javaDidacticiel > Comment puis-je implémenter un ordre de tri personnalisé dans PriorityQueue de Java ?

Comment puis-je implémenter un ordre de tri personnalisé dans PriorityQueue de Java ?

Barbara Streisand
Libérer: 2024-12-30 18:28:13
original
271 Les gens l'ont consulté

How Can I Implement a Custom Sort Order in Java's PriorityQueue?

Ordre de tri personnalisé dans PriorityQueue de Java

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 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 :

  • -1 si le premier élément doit venir avant le second
  • 0 si les éléments sont égaux
  • 1 si le premier élément doit venir après le seconde

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");
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal