Kiedy próbuję:
Queue<Integer> q = new Queue<Integer>();
kompilator daje mi błąd. Jakaś pomoc?
Ponadto, jeśli chcę zainicjować kolejkę, czy muszę zaimplementować metody kolejki?
Kiedy próbuję:
Queue<Integer> q = new Queue<Integer>();
kompilator daje mi błąd. Jakaś pomoc?
Ponadto, jeśli chcę zainicjować kolejkę, czy muszę zaimplementować metody kolejki?
Queue
to interfejs. grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/…Odpowiedzi:
A
Queue
to interfejs, co oznacza, że nie możnaQueue
bezpośrednio utworzyć .Najlepszym rozwiązaniem jest zbudowanie od klasy, która już implementuje
Queue
interfejs, jak jeden z następujących elementów:AbstractQueue
,ArrayBlockingQueue
,ArrayDeque
,ConcurrentLinkedQueue
,DelayQueue
,LinkedBlockingQueue
,LinkedList
,PriorityBlockingQueue
,PriorityQueue
, lubSynchronousQueue
.Alternatywą jest napisanie własnej klasy, która implementuje niezbędny interfejs Queue. Nie jest to potrzebne, z wyjątkiem tych rzadkich przypadków, w których chcesz zrobić coś specjalnego, zapewniając reszcie programu rozszerzenie
Queue
.Jeszcze mniej używaną alternatywą jest skonstruowanie anonimowej klasy, która implementuje
Queue
. Prawdopodobnie nie chcesz tego robić, ale jest to wymienione jako opcja ze względu na objęcie wszystkich podstaw.źródło
Queue
... ale i tak +1.ArrayDeque
Queue
to interfejs. Nie można bezpośrednio utworzyć wystąpienia interfejsu, z wyjątkiem anonimowej klasy wewnętrznej. Zwykle nie jest to to, co chcesz zrobić dla kolekcji. Zamiast tego wybierz istniejącą implementację. Na przykład:lub
Zazwyczaj implementację kolekcji wybiera się na podstawie interesujących Cię parametrów wydajności i współbieżności.
źródło
Ponieważ
Queue
jest to interfejs, nie możesz utworzyć jego instancji, jak pokazano na ilustracjiźródło
java.util.Queue
to interfejs. Nie możesz tworzyć instancji interfejsów. Musisz utworzyć instancję klasy implementującej ten interfejs. W tym przypadku taką klasą jest LinkedList.Stack<String> stack = new Stack<>(); stack.push("a"); stack.push("b"); System.out.println(stack.pop());
import java.util.Stack;
Kolejka to interfejs; nie możesz jawnie skonstruować kolejki. Będziesz musiał utworzyć wystąpienie jednej z jego klas implementujących. Coś jak:
Oto link do samouczka Java na ten temat.
źródło
Interfejs Queue rozszerza java.util.Collection o dodatkowe operacje wstawiania, wyodrębniania i kontroli, takie jak:
+offer(element: E):
boolean // Wstawianie elementu+poll(): E
// Pobiera element i zwraca NULL, jeśli kolejka jest pusta+remove(): E
// Pobiera i usuwa element oraz zgłasza wyjątek, jeśli kolejka jest pusta+peek(): E
// Pobiera, ale nie usuwa nagłówka tej kolejki, zwracając wartość null, jeśli ta kolejka jest pusta.+element(): E
// Pobiera, ale nie usuwa nagłówka tej kolejki, zgłasza wyjątek, jeśli kolejka jest pusta.Przykładowy kod implementacji kolejki:
Wyjście kodu:
źródło
Kolejka to interfejs w javie, nie możesz tego zrobić.
Zamiast tego masz dwie opcje:
opcja 1:
Opcja 2:
Polecam użycie opcji 2, ponieważ jest nieco szybsza niż druga
źródło
Kolejka w Javie jest definiowana jako interfejs, a wiele gotowych do użycia implementacji jest obecnych jako część wydania JDK. Oto kilka: LinkedList , Priority Queue, ArrayBlockingQueue, ConcurrentLinkedQueue, Linked Transfer Queue, Synchronous Queue itp.
SO Możesz stworzyć dowolną z tych klas i trzymać ją jako odwołanie do kolejki. na przykład
Możesz również zaimplementować własny interfejs kolejki implementujący kolejkę.
źródło
Queue
jest interfejsem w Javie, nie możesz tego zrobić. próbować:źródło