betacode

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

Сайт бесплатного изучения языков:
Следуйте за нами на нашей фан-странице, чтобы получать уведомления каждый раз, когда появляются новые статьи. Facebook

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