betacode

Руководство Java Queue

1- Queue

Queue (очередь) - это подинтерфейс of Collection, поэтому она обладает всеми функциями of Collection. В нем есть методы для доступа к первому элементу или его удаления, а также методы для вставки элемента в очередь. Если вы хотите получить доступ к определенному элементу, вы должны удалить все предшествующие ему элементы из очереди.
Queue - это Collection, которая позволяет дублировать элементы, но не элементы null.
Распространенный пример - очередь в баре. В то время как обслуживается только первый человек в очереди, новый человек будет вставлен где-то в очередь. Это может быть не последняя позиция, в зависимости от типа очереди и приоритета нового человека.
public interface Queue<E> extends Collection<E>
Иерархия интерфейсов в Java Collection Framework:
Иерархия классов в группе Queue:
Связь между интерфейсами и классами в группе Queue:
  • ArrayBlockingQueue
  • ArrayDeque
  • ConcurrentLinkedQueue
  • DelayQueue
  • LinkedBlockingDeque
  • LinkedBlockingQueue
  • LinkedList
  • LinkedTransferQueue
  • PriorityBlockingQueue
  • PriorityQueue
  • SynchronousQueue
LinkedList - это специальный класс, который принадлежит как группе List, так и группе Queue:

2- Методы Queue

Кроме методов, унаследованных от Collection, Queue также имеет свои собственные методы:
boolean add(E e);
boolean offer(E e);

E remove();
E poll();

E element();
E peek();
  Throws exception Returns special value
Insert boolean add(E) boolean offer(E)
Remove E remove() E poll()
Examine E element() E peek()

boolean add(E)* / boolean offer(E)

boolean add(E)Вставляет элемент в Queue. Если больше нет места для вставки, этот метод создает исключение. Метод возвращает true, если вставка выполнена успешно.
boolean offer(E)Вставляет элемент в Queue. Если в Queue больше нет пустого места или вставить не удалось, метод возвращает false.
Когда элемент вставляется в Queue, его положение определяется типом Queue и приоритетом элемента. Вы не можете указать его положение.
В зависимости от типа используемого Queue он может ограничивать количество элементов или автоматически увеличивать их размер.

E remove()* / E poll()

E remove()Возвращает первый элемент Queue и удаляет его из Queue. Этот метод создает исключение, если в Queue нет элементов.
E poll()Возвращает первый элемент Queue и удаляет его из Queue. Этот метод возвращает null, если в Queue нет элементов.

E element() * / E peek()

E element()Возвращает первый элемент Queue, но не удаляет его из Queue. Этот метод создает исключение, если в Queue нет элементов.
E peek()Возвращает первый элемент Queue, но не удаляет его из Queue. Этот метод возвращает null, если в Queue нет элементов.

3- Examples

LinkedList (Queue)

LinkedList представляет собой традиционную очередь. Метод add/offer добавляют элемент в хвост этой очереди.
LinkedListEx1.java
package org.o7planning.queue.ex;

import java.util.LinkedList;
import java.util.Queue;

public class LinkedListEx1 {

    public static void main(String[] args) {
       // Create Queue     
       Queue<String> queue = new LinkedList<String>();
       
       queue.offer("One");
       queue.offer("Two");
       queue.offer("Three");
       queue.offer("Four");
       queue.offer("Five");
       
       String current;
       
       while((current = queue.poll())!= null) {
           System.out.println(current);
       }
    }
}
Output:
One
Two
Three
Four
Five

PriorityQueue

PriorityQueue - это Queue, которая может автоматически сортировать элементы по их приоритетному порядку или по предоставленному Comparator. Это означает, что элемент, вставленный в PriorityQueue, может находиться не в последней позиции.
Например, PriorityQueue<String> сортирует элементы в алфавитном порядке.
PriorityQueueEx1.java
package org.o7planning.queue.ex;

import java.util.PriorityQueue;
import java.util.Queue;

public class PriorityQueueEx1 {

    public static void main(String[] args) {
       // Create Queue     
       Queue<String> queue = new PriorityQueue<String>();
       
       queue.offer("One");
       queue.offer("Two");
       queue.offer("Three");
       queue.offer("Four");
       queue.offer("Five");
       
       String current;
       
       while((current = queue.poll())!= null) {
           System.out.println(current);
       }
    }
}
Output:
Five
Four
One
Three
Two
  • TODO Link?
Maybe you are interested

Это онлайн курс вне вебсайта o7planning, который мы представляем, он включает бесплатные курсы или курсы со скидкой.