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
Barbara Streisandoriginal
2024-12-30 18:28:13284parcourir

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");

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

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