PriorityQueue en Java

Farkhanda Athar 12 octobre 2023
  1. Déclaration de PriorityQueue en Java
  2. Ajout d’un élément à PriorityQueue
  3. Suppression d’éléments de PriorityQueue
  4. Accès aux éléments PriorityQueue
  5. Itération de la PriorityQueue
PriorityQueue en Java

Une PriorityQueue est utilisée lorsque les objets doivent continuer en fonction de la priorité. Il est également basé sur l’algorithme First-In-First-Out, mais parfois les éléments doivent être traités en fonction de la priorité. C’est pourquoi PriorityQueue entre en jeu. PriorityQueue est basé sur un tas prioritaire. Les éléments de la PriorityQueue sont organisés selon l’ordre naturel, et au moment de la construction de la queue, cela dépend du constructeur utilisé.

Déclaration de PriorityQueue en Java

public class PriorityQueue<E> extends AbstractQueue<E> implements Serializable

Ici, E est le type d’éléments contenus dans cette file d’attente.

Voyons comment les différentes opérations peuvent être effectuées sur la classe PriorityQueue.

Ajout d’un élément à PriorityQueue

Pour inclure un élément dans la PriorityQueue, il est possible d’utiliser la méthode add() ou la méthode addition(). L’ordre d’insertion n’est pas enregistré dans la PriorityQueue. Ces éléments seront stockés suivant l’ordre de priorité, qui sera ascendant par défaut.

Exemple:

import java.io.*;
import java.util.*;

public class PriorityQueueDemo {
  public static void main(String args[]) {
    PriorityQueue<String> pq = new PriorityQueue<>();

    pq.add("Welcome");
    pq.add("To");
    pq.add("Party");
    System.out.println(pq);
  }
}

Production:

[To, Welcome, Party]

Suppression d’éléments de PriorityQueue

Pour supprimer l’élément d’une PriorityQueue, nous pouvons utiliser la méthode delete(). S’il existe plusieurs de ces objets, la première instance de l’objet est supprimée. De plus, il est également possible d’utiliser la méthode poll() pour prendre la tête puis la remplacer.

import java.io.*;
import java.util.*;
public class PriorityQueueDemo {
  public static void main(String args[]) {
    PriorityQueue<String> pq = new PriorityQueue<>();
    pq.add("Welcome");
    pq.add("To");
    pq.add("Party");

    System.out.println("Initial PriorityQueue " + pq);
    pq.remove("Geeks");
    System.out.println("After Remove - " + pq);
    System.out.println("Poll Method - " + pq.poll());
    System.out.println("Final PriorityQueue - " + pq);
  }
}

Production:

Initial PriorityQueue [To, Welcome, Party]
After Remove - [To, Welcome]
Poll Method - To
Final PriorityQueue - [Party]

Accès aux éléments PriorityQueue

Parce que Queue est basé sur son principe First In First Out, nous ne pouvons accéder qu’à la tête de la Queue. Pour accéder aux éléments Queue prioritaires, vous pouvez utiliser la méthode peek().

Exemple:

// Java program to access elements
// from a PriorityQueue
import java.util.*;

class PriorityQueueDemo {
  // Main Method
  public static void main(String[] args) {
    // Creating a priority queue
    PriorityQueue<String> pq = new PriorityQueue<>();
    pq.add("Welcome");
    pq.add("To");
    pq.add("Party");
    System.out.println("PriorityQueue: " + pq);

    // Using the peek() method
    String element = pq.peek();
    System.out.println("Accessed Element: " + element);
  }
}

Production:

PriorityQueue: [To, Welcome, Party]
Accessed Element: To

Itération de la PriorityQueue

Il existe de nombreuses façons d’itérer sur la PriorityQueue. La méthode la plus connue consiste à convertir la queue en un tableau, puis à la parcourir à l’aide de la boucle for a. De plus, la queue est livrée avec un itérateur interne qui peut être utilisé pour parcourir la queue.

Exemple:

import java.util.*;
public class PriorityQueueDemo {
  public static void main(String args[]) {
    PriorityQueue<String> pq = new PriorityQueue<>();

    pq.add("Welcome");
    pq.add("To");
    pq.add("Party");

    Iterator iterator = pq.iterator();

    while (iterator.hasNext()) {
      System.out.print(iterator.next() + " ");
    }
  }
}

Production:

To Welcome Party

Article connexe - Java Queue