Ich kam heraus, als ich Java Gold studierte, also kritzelte ich es.
Queue<E>
Sammlung erben \
** Reihe (wartet auf Personen und Fahrzeuge) **
Und das. Das Innere von () ist ein Miso.
Mit anderen Worten, es hat eine Datenstruktur namens "FIFO (First-in-First-out)", mit der Sie das erste, was Sie eingeben, abrufen können. Leute, die darauf warten, dass sie an die Reihe kommen, werden an erster Stelle stehen, und diejenigen, die in der Schlange stehen, werden an erster Stelle stehen.
Deshalb wird es manchmal als "Warteschlange" bezeichnet.
Dies bedeutet jedoch nicht, dass es separat implementiert werden muss.
Bei Fehler eine Ausnahme auslösen | Gibt bei einem Fehler null zurück | |
---|---|---|
Einfügen | add(e) | offer(e) |
Mitnahme | remove() | poll() |
Referenz | element() | peak() |
QueueTest.java
import java.util.Queue;
import java.util.ArrayDeque;
public class QueueTest {
public void myQueue() {
Queue<Integer> queueTest = new ArrayDeque<Integer>();
for(int i=0; i < 10; i++) {
//Wert in Warteschlange einfügen
queueTest.add(i);
}
//Wert in Warteschlange einfügen
queueTest.offer(100);
System.out.println(queueTest);
//Extrahieren Sie den Anfang
Integer r = queueTest.remove();
System.out.println("remove value: " + r);
//Siehe oben
System.out.println(queueTest.element());
//Extrahieren Sie den Anfang
Integer p = queueTest.poll();
System.out.println("poll value: " + p);
//Siehe oben
System.out.println(queueTest.peek());
System.out.println(queueTest);
}
}
Ausführungsergebnis:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 100]
remove value: 0
1
poll value: 1
2
[2, 3, 4, 5, 6, 7, 8, 9, 100]
Deque<E>
Warteschlange erben \
Deque scheint übrigens als "Deck" gelesen zu werden. Ich dachte: "Ist es nicht" Warteschlange "...", aber mit "Warteschlange", was "Operation zum Abrufen von Daten" bedeutet. Es war eine Katastrophe. Es muss jemanden geben, der den gleichen Fehler gemacht hat.
Bei Fehler eine Ausnahme auslösen | Gibt bei einem Fehler null zurück | |
---|---|---|
Einfügen (oben) | addFirst(e) | offerFirst(e) |
Einfügen (Ende) | removeFirst() | pollFirst() |
Herausnehmen (oben) | getFirst() | peakFirst() |
Herausnehmen (Ende) | addLast() | offerLast() |
Referenz (oben) | removeLast() | pollLast() |
Referenz (Ende) | getLast() | peakLast() |
Warum ist es nicht das ReferenzelementFirst / Last für den Ausnahmewurf ...
DequeTest.java
import java.util.Deque;
import java.util.ArrayDeque;
public class DequeTest {
public void myDeque() {
Deque<Integer> dequeTest = new ArrayDeque<Integer>();
for(int i=0; i < 10; i++) {
//Wert von Anfang an in die Warteschlange einfügen
dequeTest.addFirst(i);
}
System.out.println(dequeTest);
//Extrahieren Sie das Ende
Integer r = dequeTest.removeLast();
System.out.println("remove value: " + r);
//Siehe Ende
System.out.println(dequeTest.getLast());
//Extrahieren Sie den Anfang
Integer p = dequeTest.pollFirst();
System.out.println("poll value: " + p);
//Siehe oben
System.out.println(dequeTest.peekFirst());
System.out.println(dequeTest);
}
}
Ausführungsergebnis:
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
remove value: 0
1
poll value: 9
8
[8, 7, 6, 5, 4, 3, 2, 1]
Sie können sehen, dass die Einfügereihenfolge der Werte von 0 bis 9 die Umkehrung der Warteschlange ist. Da es aus beiden Richtungen eingefügt werden kann, kann es auch als Stapel verwendet werden, der die "LIFO-Methode (Last-in-First-out) / Last-in-first-out" verwendet.
Recommended Posts