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)

Verwandter Artikel - Java Queue

  • FIFO-Warteschlange in Java