offer vs add de file d'attente en Java

Rashmi Patidar 12 octobre 2023
offer vs add de file d'attente en Java

Une Queueue est une structure de données qui permet aux utilisateurs d’ajouter des éléments de la manière First in First out. En Java, une queue est une interface présente dans le package java.util. C’est une structure linéaire qui permet des éléments ordonnés dans la structure de données.

La collection est ouverte des deux extrémités, ou l’arrière, et l’extrémité avant. La propriété permet d’ajouter des objets à l’avant et de les supprimer à l’arrière.

La structure propose différentes méthodes, et sa description est dans le code ci-dessous.

import java.util.Queue;
import java.util.concurrent.ArrayBlockingQueue;

public class Main {
  public static void main(String[] args) {
    Queue queue = new ArrayBlockingQueue(2);
    boolean value = false;
    value = queue.offer(1);
    System.out.println("Offer Returned Value: " + value);
    value = queue.offer(2);
    System.out.println("Offer Returned Value: " + value);
    value = queue.offer(3);
    System.out.println("Offer Returned Value: " + value);

    Queue blockingQueue = new ArrayBlockingQueue(2);
    blockingQueue.add(5);
    blockingQueue.add(10);
    blockingQueue.add(15);
  }
}

Le bloc de code ci-dessus contient les deux implémentations des méthodes add et offer et fournit la différence entre les deux. Le bloc de code ci-dessus instancie une instance de queue en utilisant le mot-clé new.

La première instruction crée un objet de la ArrayBlockingQueue avec la capacité fixe de taille deux et la politique d’accès par défaut. Il prend une valeur de taille comme paramètre. Il lève une IllegalArgumentException si la capacité est inférieure à un.

La méthode offer insère l’élément spécifié dans cette file d’attente après vérification des restrictions de capacité. La fonction prend le paramètre comme élément à ajouter. Cette fonction renvoie true si la valeur est ajoutée à la fin de la file d’attente ; sinon, false.

Il lève une ClassCastException si la classe de l’élément spécifié l’empêche de lui être ajouté. La NullPointerException est appelée si la valeur spécifiée est nulle. La IllegalArgumentException est levée si une propriété d’élément l’empêche d’être ajoutée à la file d’attente.

L’instruction print à côté de la fonction offer imprime la valeur booléenne true ou false. Encore une fois, un nouveau ArrayBlockingQueue est instancié avec une capacité de taille two. Il ajoute jusqu’à deux insertions réussies, puis lance une trace Exception.

Cette méthode prend un paramètre comme élément à ajouter à la file d’attente. Il renvoie true à chaque fois une fois l’ajout réussi ; sinon, il lève une IllegalStateException si la valeur ne peut pas être ajoutée.

La ClassCastException est levée si la classe de l’élément spécifié l’empêche d’être ajoutée. Le NullPointerException si la valeur spécifiée est null, et IllegalArgumentException si une propriété de cet élément l’empêche d’être ajouté à la file d’attente.

La seule différence entre les méthodes est que la méthode offer renvoie true ou false si l’ajout est fait. Par opposition à cela, la méthode add lève une exception lorsqu’aucun ajout n’est plus possible dans la file d’attente.

Vous trouverez ci-dessous la sortie résultante du bloc de code ci-dessus.

Offer Returned Value: true
Offer Returned Value: true
Offer Returned Value: false
Exception in thread "main" java.lang.IllegalStateException: Queue full
    at java.util.AbstractQueue.add(AbstractQueue.java:98)
    at java.util.concurrent.ArrayBlockingQueue.add(ArrayBlockingQueue.java:312)
    at F11.QueueAddVsOffer.main(QueueAddVsOffer.java:25)
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Article connexe - Java Queue