Heim  >  Artikel  >  Java  >  Warteschlange in Java

Warteschlange in Java

WBOY
WBOYOriginal
2024-08-30 16:03:40987Durchsuche

Die Warteschlangendatenstruktur verwendet das FIFO-Prinzip (First In First Out). Es wird verwendet, um das zu verarbeitende Objekt in der Reihenfolge seines Eintreffens aufzubewahren. Dies ist der Schlange von Menschen, die in einer Warteschlange stehen, sehr ähnlich. Da Java umfassende Unterstützung für die Datenstruktur in Form der Collection-Schnittstelle bietet, ist die Warteschlange eine in der Collection-Schnittstelle verfügbare Schnittstelle. Es erweitert die Collection-Schnittstelle. Es ist im Java.util-Paket verfügbar und unterstützt alle in der Collection-Schnittstelle verfügbaren Vorgänge sowie einige zusätzliche Extraktions-, Einfügungs- und Inspektionsvorgänge.

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Syntax:

Interface Queue<E>

Die Warteschlange ist eine Schnittstelle, keine Klasse und kann daher nicht direkt instanziiert werden. Die Deklaration zeigt, dass die Warteschlange Werte als generisch akzeptiert, ähnlich wie Sammlungen, und wir jedes Objekt an sie übergeben können. Java verfügt über mehrere Implementierungen der Queue-Schnittstelle, die wir bei der Verwendung der Queues verwenden können. Sie sind LinkedList und PriorityQueue.

Eine Warteschlange kann wie folgt deklariert werden:

Queue< Object > q = new LinkedList<>();
Queue< Object > q = new PriorityQueue<>();

Wie funktioniert die Warteschlange in Java?

  • Wie bereits erwähnt, erweitert die Queue-Schnittstelle die Sammlungsschnittstelle; Daher unterstützt es alle darin verfügbaren grundlegenden Betriebsmethoden.
  • Die Implementierungen wie LinkedList und PriorityQueue implementieren die warteschlangenspezifischen Methoden, die in der Queue-Schnittstelle deklariert sind.
  • Die LinkedList enthält die Elemente als Standard der LinkedList, d. h. in der Einfügereihenfolge. Die PriorityQueue behält die natürliche Reihenfolge der eingefügten Elemente bei.
  • Beachten Sie, dass diese beiden Implementierungen nicht threadsicher sind. Java stellt hierfür eine weitere Implementierung namens PriorityBlockingQueue bereit, die threadsicher ist.

Warteschlangenmitgliedstypen in Java

  • Da es sich bei der Warteschlange um eine Schnittstelle handelt, enthält sie nur abstrakte Methoden und keine Datenmitglieder.
  • Die Warteschlange bietet nur eine Möglichkeit, die in untergeordneten Klassen implementierten Operationen zu definieren.

Warteschlangenfunktionen in Java

  • Da die Warteschlange die FIFO-Struktur unterstützt, ermöglicht sie das Einfügen der Elemente an einem Ende und das Entfernen der Elemente am anderen (vorderen) Ende.
  • Dies sind die beiden grundlegenden Vorgänge, die von einer Warteschlange unterstützt werden.
  • Alle in einer Warteschlange verfügbaren Methoden können in zwei Kategorien unterteilt werden; Der erste Methodentyp löst eine Ausnahme aus, wenn die Operation fehlschlägt, z. B. wenn kein Element gefunden wurde, und bei der zweiten Methodenart wird anstelle der Ausnahme ein bestimmter Wert wie null oder falsch zurückgegeben, wenn der Vorgang fehlschlägt .
  • Ein Kopf in einem Warteschlangenkonzept stellt immer das erste Element in der Warteschlange dar; Beim Entfernen wird zuerst dieses Kopfelement entfernt.

Unten sind alle in der Warteschlange verfügbaren Methoden aufgeführt:

  Returns special value Throws exception
Insert offer(e) add(e)
Remove poll() remove()
Examine peek() element()
  Gibt einen Sonderwert zurück Wirft eine Ausnahme aus Einfügen Angebot(e) hinzufügen(e) Entfernen poll() remove() Untersuchen peek() element()

So as explained, two types of methods throw an exception and return a special value. There are three types of operation in this kind of operation: insertion, the second is removal, and the third is retrieval or examination. In the case of the remove operation, an object will be removed from the queue. Still, in the case of examination, the object will be returned without actually removing from the queue.

Examples of Queue in Java

Given below are the different examples of Queue in Java:

Example #1 – Add operation with LinkedList implementation

Code:

import java.util.LinkedList;
import java.util.Queue;
public class QueueOperations {
public static void main(String[] args) {
Queue<Integer> q = new LinkedList<Integer> ();
q.add(5);
q.add(2);
q.add(1);
q.add(4);
q.add(3);
System.out.println(q);
}
}

Output:

Warteschlange in Java

Note here that the order of insertion is the same with output from left to write.

Example #2 – Let’s remove the added elements one by one

Code:

import java.util.LinkedList;
import java.util.Queue;
public class QueueOperations {
public static void main(String[] args) {
Queue<Integer> q = new LinkedList<Integer> ();
q.add(5);
q.add(2);
q.add(1);
q.add(4);
q.add(3);
System.out.println(q);
while (!q.isEmpty()) {
System.out.print(q.remove() + " ");
}
System.out.println("");
System.out.println(q);
}
}

Output:

Warteschlange in Java

Here, we have used the function isEmpty() to check when the queue becomes empty after removing elements. The removal order is the same as per the insertion. After removing all the elements, we printed the queue and obtained an empty bracket at the end.

Example #3 – Insertion and Removal Operation on PriorityQueue

Code:

import java.util.PriorityQueue;
import java.util.Queue;
public class QueueOperations {
public static void main(String[] args) {
Queue<Integer> q = new PriorityQueue<Integer> ();
q.add(5);
q.add(2);
q.add(1);
q.add(4);
q.add(3);
System.out.println(q);
while (!q.isEmpty()) {
System.out.print(q.remove() + " ");
}
System.out.println("");
System.out.println(q);
}
}

Output:

Warteschlange in Java

Here, we have used PriorityQueue, which will hold and return the elements depending upon the elements’ natural ordering or upon the comparator, if any passed. Note the insertion order and removal orders are not the same. The removal is based totally on the value of elements.

Example #4 – Examine operation on LinkedList

Code:

import java.util.LinkedList;
import java.util.Queue;
public class QueueOperations {
public static void main(String[] args) {
Queue<Integer> q = new LinkedList<Integer> ();
q.add(5);
q.add(2);
q.add(1);
q.add(4);
q.add(3);
System.out.println(q);
System.out.println( q.peek() );
System.out.println(q);
}
}

Output:

Warteschlange in Java

Note here that we have used the peek() function, which will return the head of the queue without actually removing it. We printed the queue after performing the peek operation, and you can observe that the head element, which is 5, remains unchanged in the queue.

Example #5 – Examine operation on PriorityQueue

Code:

import java.util.PriorityQueue;
import java.util.Queue;
public class QueueOperations {
public static void main(String[] args) {
Queue<Integer> q = new PriorityQueue<Integer> ();
q.add(5);
q.add(2);
q.add(1);
q.add(4);
q.add(3);
System.out.println(q);
System.out.println( q.peek() );
System.out.println(q);
}
}

Output:

Warteschlange in Java

This is similar to the previous example’s LinkedList operation, but note the head element is 1 because it’s a PriorityQueue.

Conclusion

Java utilizes the Queue interface as a means to maintain elements in insertion order. It supports operations like insertion, retrieval, and removal. There are alternative methods available for all the methods. We have seen examples of the most commonly used methods in queue operation.

Das obige ist der detaillierte Inhalt vonWarteschlange in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Verein in JavaNächster Artikel:Verein in Java