Когда я пытаюсь:
Queue<Integer> q = new Queue<Integer>();
компилятор выдает ошибку. Любая помощь?
Кроме того, если я хочу инициализировать очередь, нужно ли мне реализовать методы очереди?
Когда я пытаюсь:
Queue<Integer> q = new Queue<Integer>();
компилятор выдает ошибку. Любая помощь?
Кроме того, если я хочу инициализировать очередь, нужно ли мне реализовать методы очереди?
Queue
это интерфейс. grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/…Ответы:
A
Queue
- это интерфейс, что означает, что вы не можете создатьQueue
напрямую.Наилучшим вариантом является построение от класса , который уже реализует
Queue
интерфейс, как один из следующих:AbstractQueue
,ArrayBlockingQueue
,ArrayDeque
,ConcurrentLinkedQueue
,DelayQueue
,LinkedBlockingQueue
,LinkedList
,PriorityBlockingQueue
,PriorityQueue
, илиSynchronousQueue
.Альтернативный вариант - написать собственный класс, реализующий необходимый интерфейс Queue. Это не требуется, за исключением тех редких случаев, когда вы хотите сделать что-то особенное, предоставляя остальной части вашей программы расширение
Queue
.public class MyQueue<T extends Tree> implements Queue<T> { public T element() { ... your code to return an element goes here ... } public boolean offer(T element) { ... your code to accept a submission offer goes here ... } ... etc ... }
Еще менее используемая альтернатива - создание анонимного класса, который реализует
Queue
. Вы, вероятно, не захотите этого делать, но это указано как вариант, чтобы охватить все основы.new Queue<Tree>() { public Tree element() { ... }; public boolean offer(Tree element) { ... }; ... };
источник
Queue
... но в любом случае +1.ArrayDeque
Queue
это интерфейс. Вы не можете создать экземпляр интерфейса напрямую, кроме как через анонимный внутренний класс. Обычно это не то, что вы хотите сделать для коллекции. Вместо этого выберите существующую реализацию. Например:Queue<Integer> q = new LinkedList<Integer>();
или
Queue<Integer> q = new ArrayDeque<Integer>();
Обычно вы выбираете реализацию коллекции по интересующим вас характеристикам производительности и параллелизма.
источник
Queue<String> qe=new LinkedList<String>(); qe.add("b"); qe.add("a"); qe.add("c");
Поскольку
Queue
это интерфейс, вы не можете создать его экземпляр, как вы проиллюстрировали.источник
java.util.Queue
это интерфейс. Вы не можете создавать экземпляры интерфейсов. Вам необходимо создать экземпляр класса, реализующего этот интерфейс. В данном случае таким классом является LinkedList.Stack<String> stack = new Stack<>(); stack.push("a"); stack.push("b"); System.out.println(stack.pop());
import java.util.Stack;
Очередь - это интерфейс; вы не можете явно создать очередь. Вам нужно будет создать экземпляр одного из его реализующих классов. Что-то типа:
Queue linkedList = new LinkedList();
Вот ссылка на учебник по Java по этой теме.
источник
Интерфейс Queue расширяет java.util.Collection дополнительными операциями вставки, извлечения и проверки, например:
+offer(element: E):
логическое // Вставка элемента+poll(): E
// Извлекает элемент и возвращает NULL, если очередь пуста+remove(): E
// Извлекает и удаляет элемент и выдает исключение, если очередь пуста+peek(): E
// Извлекает, но не удаляет заголовок этой очереди, возвращая null, если эта очередь пуста.+element(): E
// Извлекает, но не удаляет заголовок этой очереди, выдает исключение, если очередь te пуста.Пример кода для реализации очереди:
java.util.Queue<String> queue = new LinkedList<>(); queue.offer("Hello"); queue.offer("StackOverFlow"); queue.offer("User"); System.out.println(queue.peek()); while (queue.size() > 0){ System.out.println(queue.remove() + " "); } //Since Queue is empty now so this will return NULL System.out.println(queue.peek());
Вывод кода:
Hello Hello StackOverFlow User null
источник
Очередь - это интерфейс в java, вы не можете этого сделать.
Вместо этого у вас есть два варианта:
Опция 1:
Queue<Integer> Q = new LinkedList<>();
option2:
Queue<Integer> Q = new ArrayDeque<>();
Я рекомендую использовать вариант 2, так как он немного быстрее, чем другие
источник
Очередь в Java определяется как интерфейс, и многие готовые к использованию реализации представлены как часть выпуска JDK. Вот некоторые из них: LinkedList , Priority Queue, ArrayBlockingQueue, ConcurrentLinkedQueue, Linked Transfer Queue, Synchronous Queue и т. Д.
SO Вы можете создать любой из этих классов и сохранить его как ссылку на очередь. например
import java.util.LinkedList; import java.util.Queue; public class QueueExample { public static void main (String[] args) { Queue que = new LinkedList(); que.add("first"); que.offer("second"); que.offer("third"); System.out.println("Queue Print:: " + que); String head = que.element(); System.out.println("Head element:: " + head); String element1 = que.poll(); System.out.println("Removed Element:: " + element1); System.out.println("Queue Print after poll:: " + que); String element2 = que.remove(); System.out.println("Removed Element:: " + element2); System.out.println("Queue Print after remove:: " + que); } }
Вы также можете реализовать свою собственную очередь, реализующую интерфейс Queue.
источник
Queue
это интерфейс в java, вы не могли этого сделать. пытаться:Queue<Integer> Q = new LinkedList<Integer>();
источник