V tomto kurzu se seznámíme s rozhraním Java Queue a jeho metodami.
Queue
Rozhraní sbírek rámce Java poskytuje funkce datové struktury fronta. Rozšiřuje Collection
rozhraní.
Třídy, které implementují frontu
Jelikož se Queue
jedná o rozhraní, nemůžeme poskytnout jeho přímou implementaci.
Aby bylo možné používat funkce Queue
, musíme použít třídy, které ji implementují:
- ArrayDeque
- Spojový seznam
- Prioritní fronta
Rozhraní, která rozšiřují frontu
Queue
Rozhraní je také rozšířena o různé podrozhraní:
Deque
BlockingQueue
BlockingDeque
Práce s datovou strukturou fronty
Ve frontách se prvky ukládají a přistupuje k nim způsobem First In, First Out . To znamená, že prvky jsou přidány zezadu a odstraněny zepředu .
Jak používat frontu?
V Javě musíme java.util.Queue
pro použití importovat balíček Queue
.
// LinkedList implementation of Queue Queue animal1 = new LinkedList(); // Array implementation of Queue Queue animal2 = new ArrayDeque(); // Priority Queue implementation of Queue Queue animal 3 = new PriorityQueue();
Zde jsme vytvořili objekty animal1, animal2 a animal3 tříd LinkedList
, ArrayDeque
a PriorityQueue
v tomto pořadí. Tyto objekty mohou využívat funkce Queue
rozhraní.
Metody fronty
Queue
Rozhraní zahrnuje všechny metody Collection
rozhraní. Je to proto, že Collection
je super rozhraní Queue
.
Mezi běžně používané metody Queue
rozhraní patří:
- add () - Vloží zadaný prvek do fronty. Pokud je úkol úspěšný,
add()
vrátí setrue
, pokud ne, vyvolá výjimku. - offer () - Vloží zadaný prvek do fronty. Pokud je úkol úspěšný,
offer()
vrátí setrue
, pokud ne, vrátí sefalse
. - element () - Vrátí záhlaví fronty. Vyvolá výjimku, pokud je fronta prázdná.
- peek () - Vrátí hlavu fronty. Vrátí se,
null
pokud je fronta prázdná. - remove () - Vrací a odstraňuje hlavu fronty. Vyvolá výjimku, pokud je fronta prázdná.
- poll () - Vrátí a odebere hlavu fronty. Vrátí se,
null
pokud je fronta prázdná.
Implementace frontového rozhraní
1. Implementace třídy LinkedList
import java.util.Queue; import java.util.LinkedList; class Main ( public static void main(String() args) ( // Creating Queue using the LinkedList class Queue numbers = new LinkedList(); // offer elements to the Queue numbers.offer(1); numbers.offer(2); numbers.offer(3); System.out.println("Queue: " + numbers); // Access elements of the Queue int accessedNumber = numbers.peek(); System.out.println("Accessed Element: " + accessedNumber); // Remove elements from the Queue int removedNumber = numbers.poll(); System.out.println("Removed Element: " + removedNumber); System.out.println("Updated Queue: " + numbers); ) )
Výstup
Fronta: (1, 2, 3) Přistupovaný prvek: 1 Odstraněný prvek: 1 Aktualizovaná fronta: (2, 3)
Další informace najdete na webu Java LinkedList.
2. Implementace třídy PriorityQueue
import java.util.Queue; import java.util.PriorityQueue; class Main ( public static void main(String() args) ( // Creating Queue using the PriorityQueue class Queue numbers = new PriorityQueue(); // offer elements to the Queue numbers.offer(5); numbers.offer(1); numbers.offer(2); System.out.println("Queue: " + numbers); // Access elements of the Queue int accessedNumber = numbers.peek(); System.out.println("Accessed Element: " + accessedNumber); // Remove elements from the Queue int removedNumber = numbers.poll(); System.out.println("Removed Element: " + removedNumber); System.out.println("Updated Queue: " + numbers); ) )
Výstup
Fronta: (1, 5, 2) Přistupovaný prvek: 1 Odstraněný prvek: 1 Aktualizovaná fronta: (2, 5)
Chcete-li se dozvědět více, navštivte Java PriorityQueue.
V příštích cvičeních se dozvíme podrobně o různých podrozhraních Queue
rozhraní a jeho implementaci.