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