Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Methods](https://developer.android.com/reference/java/util/Queue#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/java/util/Queue#inhmethods)

# Queue


`
public


interface
Queue
`


`


implements

https://developer.android.com/reference/java/util/Collection<E>


`

|---|
| java.util.Queue\<E\> |

|---|
| Known indirect subclasses [AbstractQueue](https://developer.android.com/reference/java/util/AbstractQueue)\<E\>, [ArrayBlockingQueue](https://developer.android.com/reference/java/util/concurrent/ArrayBlockingQueue)\<E\>, [ArrayDeque](https://developer.android.com/reference/java/util/ArrayDeque)\<E\>, [BlockingDeque](https://developer.android.com/reference/java/util/concurrent/BlockingDeque)\<E\>, [BlockingQueue](https://developer.android.com/reference/java/util/concurrent/BlockingQueue)\<E\>, [ConcurrentLinkedDeque](https://developer.android.com/reference/java/util/concurrent/ConcurrentLinkedDeque)\<E\>, [ConcurrentLinkedQueue](https://developer.android.com/reference/java/util/concurrent/ConcurrentLinkedQueue)\<E\>, [DelayQueue](https://developer.android.com/reference/java/util/concurrent/DelayQueue)\<E extends [Delayed](https://developer.android.com/reference/java/util/concurrent/Delayed)\>, [Deque](https://developer.android.com/reference/java/util/Deque)\<E\>, [LinkedBlockingDeque](https://developer.android.com/reference/java/util/concurrent/LinkedBlockingDeque)\<E\>, [LinkedBlockingQueue](https://developer.android.com/reference/java/util/concurrent/LinkedBlockingQueue)\<E\>, [LinkedList](https://developer.android.com/reference/java/util/LinkedList)\<E\>, [LinkedTransferQueue](https://developer.android.com/reference/java/util/concurrent/LinkedTransferQueue)\<E\>, [PriorityBlockingQueue](https://developer.android.com/reference/java/util/concurrent/PriorityBlockingQueue)\<E\>, [PriorityQueue](https://developer.android.com/reference/java/util/PriorityQueue)\<E\>, [SynchronousQueue](https://developer.android.com/reference/java/util/concurrent/SynchronousQueue)\<E\>, [TransferQueue](https://developer.android.com/reference/java/util/concurrent/TransferQueue)\<E\> |---|---| | [AbstractQueue](https://developer.android.com/reference/java/util/AbstractQueue)\<E\> | This class provides skeletal implementations of some `https://developer.android.com/reference/java/util/Queue` operations. | | [ArrayBlockingQueue](https://developer.android.com/reference/java/util/concurrent/ArrayBlockingQueue)\<E\> | A bounded [blocking queue](https://developer.android.com/reference/java/util/concurrent/BlockingQueue) backed by an array. | | [ArrayDeque](https://developer.android.com/reference/java/util/ArrayDeque)\<E\> | Resizable-array implementation of the `https://developer.android.com/reference/java/util/Deque` interface. | | [BlockingDeque](https://developer.android.com/reference/java/util/concurrent/BlockingDeque)\<E\> | A `https://developer.android.com/reference/java/util/Deque` that additionally supports blocking operations that wait for the deque to become non-empty when retrieving an element, and wait for space to become available in the deque when storing an element. | | [BlockingQueue](https://developer.android.com/reference/java/util/concurrent/BlockingQueue)\<E\> | A `https://developer.android.com/reference/java/util/Queue` that additionally supports operations that wait for the queue to become non-empty when retrieving an element, and wait for space to become available in the queue when storing an element. | | [ConcurrentLinkedDeque](https://developer.android.com/reference/java/util/concurrent/ConcurrentLinkedDeque)\<E\> | An unbounded concurrent [deque](https://developer.android.com/reference/java/util/Deque) based on linked nodes. | | [ConcurrentLinkedQueue](https://developer.android.com/reference/java/util/concurrent/ConcurrentLinkedQueue)\<E\> | An unbounded thread-safe [queue](https://developer.android.com/reference/java/util/Queue) based on linked nodes. | | [DelayQueue](https://developer.android.com/reference/java/util/concurrent/DelayQueue)\<E extends [Delayed](https://developer.android.com/reference/java/util/concurrent/Delayed)\> | An unbounded [blocking queue](https://developer.android.com/reference/java/util/concurrent/BlockingQueue) of `https://developer.android.com/reference/java/util/concurrent/Delayed` elements, in which an element generally becomes eligible for removal when its delay has expired. | | [Deque](https://developer.android.com/reference/java/util/Deque)\<E\> | A linear collection that supports element insertion and removal at both ends. | | [LinkedBlockingDeque](https://developer.android.com/reference/java/util/concurrent/LinkedBlockingDeque)\<E\> | An optionally-bounded [blocking deque](https://developer.android.com/reference/java/util/concurrent/BlockingDeque) based on linked nodes. | | [LinkedBlockingQueue](https://developer.android.com/reference/java/util/concurrent/LinkedBlockingQueue)\<E\> | An optionally-bounded [blocking queue](https://developer.android.com/reference/java/util/concurrent/BlockingQueue) based on linked nodes. | | [LinkedList](https://developer.android.com/reference/java/util/LinkedList)\<E\> | Doubly-linked list implementation of the `List` and `Deque` interfaces. | | [LinkedTransferQueue](https://developer.android.com/reference/java/util/concurrent/LinkedTransferQueue)\<E\> | An unbounded `https://developer.android.com/reference/java/util/concurrent/TransferQueue` based on linked nodes. | | [PriorityBlockingQueue](https://developer.android.com/reference/java/util/concurrent/PriorityBlockingQueue)\<E\> | An unbounded [blocking queue](https://developer.android.com/reference/java/util/concurrent/BlockingQueue) that uses the same ordering rules as class `https://developer.android.com/reference/java/util/PriorityQueue` and supplies blocking retrieval operations. | | [PriorityQueue](https://developer.android.com/reference/java/util/PriorityQueue)\<E\> | An unbounded priority [queue](https://developer.android.com/reference/java/util/Queue) based on a priority heap. | | [SynchronousQueue](https://developer.android.com/reference/java/util/concurrent/SynchronousQueue)\<E\> | A [blocking queue](https://developer.android.com/reference/java/util/concurrent/BlockingQueue) in which each insert operation must wait for a corresponding remove operation by another thread, and vice versa. | | [TransferQueue](https://developer.android.com/reference/java/util/concurrent/TransferQueue)\<E\> | A `https://developer.android.com/reference/java/util/concurrent/BlockingQueue` in which producers may wait for consumers to receive elements. | |

<br />

*** ** * ** ***

A collection designed for holding elements prior to processing.
Besides basic `https://developer.android.com/reference/java/util/Collection` operations, queues provide
additional insertion, extraction, and inspection operations.
Each of these methods exists in two forms: one throws an exception
if the operation fails, the other returns a special value (either
`null` or `false`, depending on the operation). The
latter form of the insert operation is designed specifically for
use with capacity-restricted `Queue` implementations; in most
implementations, insert operations cannot fail.

|   | Throws exception | Returns special value |
| Insert | `https://developer.android.com/reference/java/util/Queue#add(E)` | `https://developer.android.com/reference/java/util/Queue#offer(E)` |
| Remove | `https://developer.android.com/reference/java/util/Queue#remove()` | `https://developer.android.com/reference/java/util/Queue#poll()` |
| Examine | `https://developer.android.com/reference/java/util/Queue#element()` | `https://developer.android.com/reference/java/util/Queue#peek()` |
|---|---|---|
[Summary of Queue methods]

Queues typically, but do not necessarily, order elements in a
FIFO (first-in-first-out) manner. Among the exceptions are
priority queues, which order elements according to a supplied
comparator, or the elements' natural ordering, and LIFO queues (or
stacks) which order the elements LIFO (last-in-first-out).
Whatever the ordering used, the *head* of the queue is that
element which would be removed by a call to `https://developer.android.com/reference/java/util/Queue#remove()` or
`https://developer.android.com/reference/java/util/Queue#poll()`. In a FIFO queue, all new elements are inserted at
the *tail* of the queue. Other kinds of queues may use
different placement rules. Every `Queue` implementation
must specify its ordering properties.

The `https://developer.android.com/reference/java/util/Queue#offer(E)` method inserts an element if possible,
otherwise returning `false`. This differs from the `https://developer.android.com/reference/java/util/Collection#add(E)` method, which can fail to
add an element only by throwing an unchecked exception. The
`offer` method is designed for use when failure is a normal,
rather than exceptional occurrence, for example, in fixed-capacity
(or "bounded") queues.

The `https://developer.android.com/reference/java/util/Queue#remove()` and `https://developer.android.com/reference/java/util/Queue#poll()` methods remove and
return the head of the queue.
Exactly which element is removed from the queue is a
function of the queue's ordering policy, which differs from
implementation to implementation. The `remove()` and
`poll()` methods differ only in their behavior when the
queue is empty: the `remove()` method throws an exception,
while the `poll()` method returns `null`.

The `https://developer.android.com/reference/java/util/Queue#element()` and `https://developer.android.com/reference/java/util/Queue#peek()` methods return, but do
not remove, the head of the queue.

The `Queue` interface does not define the *blocking queue methods*, which are common in concurrent programming. These methods,
which wait for elements to appear or for space to become available, are
defined in the `https://developer.android.com/reference/java/util/concurrent/BlockingQueue` interface, which
extends this interface.

`Queue` implementations generally do not allow insertion
of `null` elements, although some implementations, such as
`https://developer.android.com/reference/java/util/LinkedList`, do not prohibit insertion of `null`.
Even in the implementations that permit it, `null` should
not be inserted into a `Queue`, as `null` is also
used as a special return value by the `poll` method to
indicate that the queue contains no elements.

`Queue` implementations generally do not define
element-based versions of methods `equals` and
`hashCode` but instead inherit the identity based versions
from class `Object`, because element-based equality is not
always well-defined for queues with the same elements but different
ordering properties.

## Summary

| ### Public methods ||
|---|---|
| ` abstract boolean` | ` https://developer.android.com/reference/java/util/Queue#add(E)(E e) ` Inserts the specified element into this queue if it is possible to do so immediately without violating capacity restrictions, returning `true` upon success and throwing an `IllegalStateException` if no space is currently available. |
| ` abstract E` | ` https://developer.android.com/reference/java/util/Queue#element()() ` Retrieves, but does not remove, the head of this queue. |
| ` abstract boolean` | ` https://developer.android.com/reference/java/util/Queue#offer(E)(E e) ` Inserts the specified element into this queue if it is possible to do so immediately without violating capacity restrictions. |
| ` abstract E` | ` https://developer.android.com/reference/java/util/Queue#peek()() ` Retrieves, but does not remove, the head of this queue, or returns `null` if this queue is empty. |
| ` abstract E` | ` https://developer.android.com/reference/java/util/Queue#poll()() ` Retrieves and removes the head of this queue, or returns `null` if this queue is empty. |
| ` abstract E` | ` https://developer.android.com/reference/java/util/Queue#remove()() ` Retrieves and removes the head of this queue. |

| ### Inherited methods |
|---|---|
| From interface ` https://developer.android.com/reference/java/util/Collection ` |---|---| | ` abstract boolean` | ` https://developer.android.com/reference/java/util/Collection#add(E)(E e) ` Ensures that this collection contains the specified element (optional operation). | | ` abstract boolean` | ` https://developer.android.com/reference/java/util/Collection#addAll(java.util.Collection<?%20extends%20E>)(https://developer.android.com/reference/java/util/Collection<? extends E> c) ` Adds all of the elements in the specified collection to this collection (optional operation). | | ` abstract void` | ` https://developer.android.com/reference/java/util/Collection#clear()() ` Removes all of the elements from this collection (optional operation). | | ` abstract boolean` | ` https://developer.android.com/reference/java/util/Collection#contains(java.lang.Object)(https://developer.android.com/reference/java/lang/Object o) ` Returns `true` if this collection contains the specified element. | | ` abstract boolean` | ` https://developer.android.com/reference/java/util/Collection#containsAll(java.util.Collection<?>)(https://developer.android.com/reference/java/util/Collection<?> c) ` Returns `true` if this collection contains all of the elements in the specified collection. | | ` abstract boolean` | ` https://developer.android.com/reference/java/util/Collection#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object o) ` Compares the specified object with this collection for equality. | | ` abstract int` | ` https://developer.android.com/reference/java/util/Collection#hashCode()() ` Returns the hash code value for this collection. | | ` abstract boolean` | ` https://developer.android.com/reference/java/util/Collection#isEmpty()() ` Returns `true` if this collection contains no elements. | | ` abstract https://developer.android.com/reference/java/util/Iterator<E>` | ` https://developer.android.com/reference/java/util/Collection#iterator()() ` Returns an iterator over the elements in this collection. | | ` default https://developer.android.com/reference/java/util/stream/Stream<E>` | ` https://developer.android.com/reference/java/util/Collection#parallelStream()() ` Returns a possibly parallel `Stream` with this collection as its source. | | ` abstract boolean` | ` https://developer.android.com/reference/java/util/Collection#remove(java.lang.Object)(https://developer.android.com/reference/java/lang/Object o) ` Removes a single instance of the specified element from this collection, if it is present (optional operation). | | ` abstract boolean` | ` https://developer.android.com/reference/java/util/Collection#removeAll(java.util.Collection<?>)(https://developer.android.com/reference/java/util/Collection<?> c) ` Removes all of this collection's elements that are also contained in the specified collection (optional operation). | | ` default boolean` | ` https://developer.android.com/reference/java/util/Collection#removeIf(java.util.function.Predicate<?%20super%20E>)(https://developer.android.com/reference/java/util/function/Predicate<? super E> filter) ` Removes all of the elements of this collection that satisfy the given predicate (optional operation). | | ` abstract boolean` | ` https://developer.android.com/reference/java/util/Collection#retainAll(java.util.Collection<?>)(https://developer.android.com/reference/java/util/Collection<?> c) ` Retains only the elements in this collection that are contained in the specified collection (optional operation). | | ` abstract int` | ` https://developer.android.com/reference/java/util/Collection#size()() ` Returns the number of elements in this collection. | | ` default https://developer.android.com/reference/java/util/Spliterator<E>` | ` https://developer.android.com/reference/java/util/Collection#spliterator()() ` Creates a `https://developer.android.com/reference/java/util/Spliterator` over the elements in this collection. | | ` default https://developer.android.com/reference/java/util/stream/Stream<E>` | ` https://developer.android.com/reference/java/util/Collection#stream()() ` Returns a sequential `Stream` with this collection as its source. | | ` abstract <T> T[]` | ` https://developer.android.com/reference/java/util/Collection#toArray(T[])(T[] a) ` Returns an array containing all of the elements in this collection; the runtime type of the returned array is that of the specified array. | | ` abstract https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/util/Collection#toArray()() ` Returns an array containing all of the elements in this collection. | | ` default <T> T[]` | ` https://developer.android.com/reference/java/util/Collection#toArray(java.util.function.IntFunction<T[]>)(https://developer.android.com/reference/java/util/function/IntFunction<T[]> generator) ` Returns an array containing all of the elements in this collection, using the provided `generator` function to allocate the returned array. | ||
| From interface ` https://developer.android.com/reference/java/lang/Iterable ` |---|---| | ` default void` | ` https://developer.android.com/reference/java/lang/Iterable#forEach(java.util.function.Consumer<?%20super%20T>)(https://developer.android.com/reference/java/util/function/Consumer<? super T> action) ` Performs the given action for each element of the `Iterable` until all elements have been processed or the action throws an exception. | | ` abstract https://developer.android.com/reference/java/util/Iterator<E>` | ` https://developer.android.com/reference/java/lang/Iterable#iterator()() ` Returns an iterator over elements of type `T`. | | ` default https://developer.android.com/reference/java/util/Spliterator<E>` | ` https://developer.android.com/reference/java/lang/Iterable#spliterator()() ` Creates a `https://developer.android.com/reference/java/util/Spliterator` over the elements described by this `Iterable`. | ||

## Public methods

### add

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract boolean add (E e)
```

Inserts the specified element into this queue if it is possible to do so
immediately without violating capacity restrictions, returning
`true` upon success and throwing an `IllegalStateException`
if no space is currently available.

<br />

| Parameters ||
|---|---|
| `e` | `E`: the element to add <br /> |

| Returns ||
|---|---|
| `boolean` | `true` (as specified by `https://developer.android.com/reference/java/util/Collection#add(E)`) <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/ClassCastException` | if the class of the specified element prevents it from being added to this queue |
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if some property of this element prevents it from being added to this queue |
| `https://developer.android.com/reference/java/lang/IllegalStateException` | if the element cannot be added at this time due to capacity restrictions |
| `https://developer.android.com/reference/java/lang/NullPointerException` | if the specified element is null and this queue does not permit null elements |

### element

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract E element ()
```

Retrieves, but does not remove, the head of this queue. This method
differs from `https://developer.android.com/reference/java/util/Queue#peek()` only in that it throws an exception
if this queue is empty.

<br />

| Returns ||
|---|---|
| `E` | the head of this queue <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/util/NoSuchElementException` | if this queue is empty |

### offer

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract boolean offer (E e)
```

Inserts the specified element into this queue if it is possible to do
so immediately without violating capacity restrictions.
When using a capacity-restricted queue, this method is generally
preferable to `https://developer.android.com/reference/java/util/Queue#add(E)`, which can fail to insert an element only
by throwing an exception.

<br />

| Parameters ||
|---|---|
| `e` | `E`: the element to add <br /> |

| Returns ||
|---|---|
| `boolean` | `true` if the element was added to this queue, else `false` <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/ClassCastException` | if the class of the specified element prevents it from being added to this queue |
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if some property of this element prevents it from being added to this queue |
| `https://developer.android.com/reference/java/lang/NullPointerException` | if the specified element is null and this queue does not permit null elements |

### peek

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract E peek ()
```

Retrieves, but does not remove, the head of this queue,
or returns `null` if this queue is empty.

<br />

| Returns ||
|---|---|
| `E` | the head of this queue, or `null` if this queue is empty <br /> |

### poll

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract E poll ()
```

Retrieves and removes the head of this queue,
or returns `null` if this queue is empty.

<br />

| Returns ||
|---|---|
| `E` | the head of this queue, or `null` if this queue is empty <br /> |

### remove

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract E remove ()
```

Retrieves and removes the head of this queue. This method differs
from `https://developer.android.com/reference/java/util/Queue#poll()` only in that it throws an exception if
this queue is empty.

<br />

| Returns ||
|---|---|
| `E` | the head of this queue <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/util/NoSuchElementException` | if this queue is empty |