Как создать экземпляр объекта Queue в java?

Когда я пытаюсь:

Queue<Integer> q = new Queue<Integer>();

компилятор дает мне ошибку. Любая помощь?

Кроме того, если я хочу инициализировать очередь, мне нужно реализовать методы очереди?

Ответ 1

Queue - это интерфейс, который означает, что вы не можете создать Queue напрямую.

Наилучшим вариантом является создание класса, который уже реализует интерфейс Queue, например, одно из следующих: AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingQueue, LinkedList, PriorityBlockingQueue, PriorityQueue или LinkedBlockingQueue или SynchronousQueue.

Альтернативой является написание собственного класса, который реализует необходимый интерфейс очереди. Это не требуется, за исключением тех редких случаев, когда вы хотите сделать что-то особенное, предоставляя остальной части вашей программы 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) {
     ...
   };
   ...
};

Ответ 2

Queue - это интерфейс. Вы не можете создавать экземпляр интерфейса напрямую, кроме как через анонимный внутренний класс. Обычно это не то, что вы хотите сделать для коллекции. Вместо этого выберите существующую реализацию. Например:

Queue<Integer> q = new LinkedList<Integer>();

или

Queue<Integer> q = new ArrayDeque<Integer>();

Обычно вы выбираете реализацию коллекции по характеристикам производительности и concurrency, которые вас интересуют.

Ответ 3

Queue<String> qe=new LinkedList<String>();

qe.add("b");
qe.add("a");
qe.add("c");

Поскольку Queue является интерфейсом, вы не можете создать его экземпляр, как показано

Ответ 5

введите описание изображения здесь

Интерфейс очереди расширяет java.util.Collection с дополнительными процессами вставки, извлечения и проверки, например:

+offer(element: E): boolean// Вставка элемента

+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

Ответ 6

Queue - это интерфейс в java, вы не можете этого сделать.

Вместо этого у вас есть два варианта:

option1:

Queue<Integer> Q = new LinkedList<>();

option2:

Queue<Integer> Q = new ArrayDeque<>();

Я рекомендую использовать параметр2, поскольку он бит быстрее, чем другой

Ответ 7

Очередь в Java определена как интерфейс, и многие готовые к использованию реализации присутствуют как часть выпуска JDK. Вот некоторые из них: LinkedList, Очередь приоритетов, ArrayBlockingQueue, ConcurrentLinkedQueue, Связанная очередь передачи, Синхронная очередь и т.д.

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);  
 }
}

Вы также можете реализовать свой собственный интерфейс, реализующий очередь.

Ответ 8

Queue - это интерфейс в java, вы не могли этого сделать. попробуйте:

Queue<Integer> Q = new LinkedList<Integer>();