Queue offer vs. add in Java
Eine Queue
ist eine Datenstruktur, die es Benutzern ermöglicht, Elemente nach dem First in First out
-Prinzip hinzuzufügen. In Java ist eine Warteschlange
eine Schnittstelle, die im Paket java.util
vorhanden ist. Es handelt sich um eine lineare Struktur, die geordnete Elemente in der Datenstruktur zulässt.
Die Kollektion ist an beiden Enden oder am hinteren und am vorderen Ende offen. Die Eigenschaft ermöglicht es, Objekte am vorderen Ende hinzuzufügen und am hinteren Ende zu entfernen.
Die Struktur bietet verschiedene Methoden und ihre Beschreibung befindet sich im folgenden Code.
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);
}
}
Der obige Codeblock enthält beide Implementierungen der Methode add
und offer
und bietet den Unterschied zwischen beiden. Der obige Codeblock instanziiert eine queue
-Instanz mit dem new
-Schlüsselwort.
Die erste Anweisung erstellt ein Objekt der ArrayBlockingQueue
mit der festen Kapazität der Größe zwei und der Standard-Zugriffsrichtlinie. Als Parameter wird ein Größenwert verwendet. Es wirft eine IllegalArgumentException
, wenn die Kapazität kleiner als eins ist.
Die Methode offer
fügt nach Prüfung der Kapazitätsbeschränkungen das angegebene Element in diese Queue ein. Die Funktion übernimmt den Parameter als hinzuzufügendes Element. Diese Funktion gibt true
zurück, wenn der Wert am Ende der Warteschlange hinzugefügt wird; sonst false
.
Es wirft eine ClassCastException
, wenn die Klasse des angegebenen Elements verhindert, dass es hinzugefügt wird. Die NullPointerException
wird aufgerufen, wenn der angegebene Wert null ist. Die IllegalArgumentException
wird geworfen, wenn eine Elementeigenschaft das Hinzufügen zur Warteschlange verhindert.
Die Anweisung print
neben der Funktion offer
gibt den booleschen Wert true
oder false
aus. Wieder wird eine neue ArrayBlockingQueue
mit der Kapazität der Grösse zwei
instanziiert. Es hängt bis zu zwei erfolgreichen Einfügungen an und wirft dann einen Exception
-Trace.
Diese Methode verwendet einen Parameter als Element, das der Warteschlange hinzugefügt wird. Es gibt jedes Mal true
zurück, wenn die erfolgreiche Addition durchgeführt wurde; andernfalls wirft es eine IllegalStateException
, wenn der Wert nicht hinzugefügt werden kann.
Die ClassCastException
wird geworfen, wenn die Klasse des angegebenen Elements das Hinzufügen verhindert. Die NullPointerException
, wenn der angegebene Wert null ist, und IllegalArgumentException
, wenn eine Eigenschaft dieses Elements verhindert, dass es der Warteschlange hinzugefügt wird.
Der einzige Unterschied zwischen den Methoden besteht darin, dass die Methode offer
beim Hinzufügen true
oder false
ausgibt. Im Gegensatz dazu wirft die Methode add
eine Ausnahme, wenn in der Queue keine Hinzufügungen mehr möglich sind.
Unten sehen Sie die resultierende Ausgabe des obigen Codeblocks.
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