Priorisation des éléments avec PriorityQueue en Java
La gestion des priorités dans une collection peut être réalisée efficacement à l'aide d'une PriorityQueue en Java. Cette structure de données maintient une file d'attente dans laquelle les éléments sont organisés en fonction d'un comparateur personnalisable, garantissant que les éléments les plus prioritaires sont récupérés en premier.
Personnalisation de l'ordre de tri
Pour trier un PriorityQueue en fonction de vos besoins spécifiques, utilisez la surcharge du constructeur qui accepte un Comparator
import java.util.Comparator; public class StringLengthComparator implements Comparator<String> { @Override public int compare(String s1, String s2) { if (s1.length() < s2.length()) { return -1; } if (s1.length() > s2.length()) { return 1; } return 0; } }
offer vs. add Méthodes
Alors que les deux offrent et ajoutent Les méthodes ajoutent des éléments à une PriorityQueue, elles offrent des différences subtiles. offer renvoie false si l'élément ne peut pas être ajouté en raison de contraintes de capacité, tandis que add lève une IllegalStateException dans ce scénario. Cependant, dans PriorityQueue, qui est illimité, les deux méthodes se comportent de manière identique, ajoutant des éléments à la file d'attente.
Illustration de l'utilisation d'une PriorityQueue avec un comparateur personnalisé :
import java.util.PriorityQueue; public class PQDemo { public static void main(String[] args) { PriorityQueue<String> queue = new PriorityQueue<>(10, new StringLengthComparator()); queue.add("short"); queue.add("very long indeed"); queue.add("medium"); while (!queue.isEmpty()) { System.out.println(queue.remove()); } } }
Sortie :
short medium very long indeed
Dans cet exemple, la file d'attente prioritaire trie les chaînes selon leur longueur, récupérant la chaîne la plus courte d'abord.
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!