16
Очередь Queue Виталий Унгурян [email protected]

Queue - очередь

Embed Size (px)

Citation preview

Page 1: Queue - очередь

Очередь Queue

Виталий Унгурян [email protected]

Page 2: Queue - очередь
Page 3: Queue - очередь

FIFO

FIFO (акроним First In, First Out — «первым пришёл — первым ушёл») — способ организации и манипулирования данными относительно времени и приоритетов.

Page 4: Queue - очередь

LIFO

LIFO (акроним Last In, First Out, «последним пришёл — первым ушёл») — в структурированном линейном списке, организованном по принципу LIFO, элементы могут добавляться и выбираться только с одного конца, называемого «вершиной списка».

Page 5: Queue - очередь

Интерфейс Queue

PriorityQueue - единственная прямая реализация интерфейса Queue (не считая LinkedList, который больше является списком, чем очередью).Эта очередь упорядочивает элементы либо по их натуральному порядку (используя интерфейс Comparable), либо с помощью интерфейса Comparator, полученному в конструкторе. FIFO.

Page 6: Queue - очередь

Интерфейс Queue E element(): возвращает, но не удаляет,

элемент из начала очереди. Если очередь пуста, генерирует исключение NoSuchElementException

boolean offer(E obj): добавляет элемент obj в конец очереди. Если элемент удачно добавлен, возвращает true, иначе - false

E peek(): возвращает без удаления элемент из начала очереди. Если очередь пуста, возвращает значение null.

Page 7: Queue - очередь

Интерфейс Queue

E poll(): возвращает с удалением элемент из начала очереди. Если очередь пуста, возвращает значение null

E remove(): возвращает с удалением элемент из начала очереди. Если очередь пуста, генерирует исключение NoSuchElementException

Page 8: Queue - очередь

Интерфейс Deque

Интерфейс Deque расширяет вышеописанный интерфейс Queue и определяет поведение двунаправленной очереди, которая работает как обычная однонаправленная очередь, либо как стек, действующий по принципу LIFO (последний вошёл - первый вышел).

Page 9: Queue - очередь

Интерфейс Deque

void addFirst(E obj): добавляет элемент в начало очереди

void addLast(E obj): добавляет элемент obj в конец очереди

E getFirst(): возвращает без удаления элемент из головы очереди. Если очередь пуста, генерирует исключение NoSuchElementException

Page 10: Queue - очередь

Интерфейс Deque

E getLast(): возвращает без удаления последний элемент очереди. Если очередь пуста, генерирует исключение NoSuchElementException

boolean offerFirst(E obj): добавляет элемент obj в самое начало очереди. Если элемент удачно добавлен, возвращает true, иначе - false

Page 11: Queue - очередь

Интерфейс Deque

boolean offerLast(E obj): добавляет элемент obj в конец очереди. Если элемент удачно добавлен, возвращает true, иначе - false

E peekFirst(): возвращает без удаления элемент из начала очереди. Если очередь пуста, возвращает значение null

Page 12: Queue - очередь

Интерфейс Deque

E peekLast(): возвращает без удаления последний элемент очереди. Если очередь пуста, возвращает значение null

pollFirst(): возвращает с удалением элемент из начала очереди. Если очередь пуста, возвращает значение null

Page 13: Queue - очередь

Интерфейс Deque

E pollLast(): возвращает с удалением последний элемент очереди. Если очередь пуста, возвращает значение null

pop(): возвращает с удалением элемент из начала очереди. Если очередь пуста, генерирует исключение NoSuchElementException

void push(E element): добавляет элемент в самое начало очереди

Page 14: Queue - очередь

Класс ArrayDeque

ArrayDeque<E> - это класс представляющий обобщённую двунаправленную очередь, наследуя функционал от класса AbstractCollection и применяя интерфейс Deque.

Page 15: Queue - очередь

Устаревшие коллекции

Enumeration — аналог интерфейса Iterator.Vector — аналог класса ArrayList. Поддерживает упорядоченный список элементов, хранимых во "внутреннем" массиве.

Page 16: Queue - очередь

Устаревшие коллекции

Stack — класс,  производный от Vector,  в который добавлены методы вталкивания (push) и выталкивания (pop) элементов,  так что список может трактоваться в терминах, принятых для описания структуры данных стека (stack).Dictionary — аналог интерфейса Map, хотя представляет собой абстрактный класс, а не интерфейс. Hashtable — аналог HashMap, синхронизирован.