betacode

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

  1. Queue
  2. Методы Queue
  3. Examples

1. Queue

Queue (очередь) - это подинтерфейс of Collection, поэтому она обладает всеми функциями of Collection. В нем есть методы для доступа к первому элементу или его удаления, а также методы для вставки элемента в очередь. Если вы хотите получить доступ к определенному элементу, вы должны удалить все предшествующие ему элементы из очереди.
Queue- это Collection, которая позволяет дублировать элементы, но не элементы null.
Распространенный пример - очередь в баре. В то время как обслуживается только первый человек в очереди, новый человек будет вставлен где-то в очередь. Это может быть не последняя позиция, в зависимости от типа очереди и приоритета нового человека.
public interface Queue<E> extends Collection<E>
Иерархия интерфейсов в Java Collection Framework:
Иерархия классов в группе Queue:
Связь между интерфейсами и классами в группе Queue:
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