interface DoubleEndedQueueInterface implements QueueInterface (View source)

A linear collection that supports element insertion and removal at both ends.

Most DoubleEndedQueueInterface implementations place no fixed limits on the number of elements they may contain, but this interface supports capacity-restricted double-ended queues as well as those with no fixed size limit.

This interface defines methods to access the elements at both ends of the double-ended queue. Methods are provided to insert, remove, and examine the element. 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 implementations; in most implementations, insert operations cannot fail.

The twelve methods described above are summarized in the following table:

Summary of DoubleEndedQueueInterface methods
First Element (Head) Last Element (Tail)
Throws exception Special value Throws exception Special value
Insert addFirst() offerFirst() addLast() offerLast()
Remove removeFirst() pollFirst() removeLast() pollLast()
Examine firstElement() peekFirst() lastElement() peekLast()

This interface extends the QueueInterface. When a double-ended queue is used as a queue, FIFO (first-in-first-out) behavior results. Elements are added at the end of the double-ended queue and removed from the beginning. The methods inherited from the QueueInterface are precisely equivalent to DoubleEndedQueueInterface methods as indicated in the following table:

Comparison of QueueInterface and DoubleEndedQueueInterface methods
QueueInterface Method DoubleEndedQueueInterface Method
add() addLast()
offer() offerLast()
remove() removeFirst()
poll() pollFirst()
element() firstElement()
peek() peekFirst()

Double-ended queues can also be used as LIFO (last-in-first-out) stacks. When a double-ended queue is used as a stack, elements are pushed and popped from the beginning of the double-ended queue. Stack concepts are precisely equivalent to DoubleEndedQueueInterface methods as indicated in the table below:

Comparison of stack concepts and DoubleEndedQueueInterface methods
Stack concept DoubleEndedQueueInterface Method
push addFirst()
pop removeFirst()
peek peekFirst()

Note that the peek() method works equally well when a double-ended queue is used as a queue or a stack; in either case, elements are drawn from the beginning of the double-ended queue.

While DoubleEndedQueueInterface implementations are not strictly required to prohibit the insertion of null elements, they are strongly encouraged to do so. Users of any DoubleEndedQueueInterface implementations that do allow null elements are strongly encouraged not to take advantage of the ability to insert nulls. This is so because null is used as a special return value by various methods to indicated that the double-ended queue is empty.

Methods

void
clear()

Removes all items from this array.

array
toArray()

Returns a native PHP array representation of this array object.

bool
isEmpty()

Returns true if this array is empty.

bool
add(mixed $element)

Ensures that this queue contains the specified element (optional operation).

mixed
element()

Retrieves, but does not remove, the head of this queue.

bool
offer(mixed $element)

Inserts the specified element into this queue if it is possible to do so immediately without violating capacity restrictions.

mixed|null
peek()

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

mixed|null
poll()

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

mixed
remove()

Retrieves and removes the head of this queue.

string
getType()

Returns the type associated with this queue.

bool
addFirst(mixed $element)

Inserts the specified element at the front of this queue if it is possible to do so immediately without violating capacity restrictions.

bool
addLast(mixed $element)

Inserts the specified element at the end of this queue if it is possible to do so immediately without violating capacity restrictions.

bool
offerFirst(mixed $element)

Inserts the specified element at the front of this queue if it is possible to do so immediately without violating capacity restrictions.

bool
offerLast(mixed $element)

Inserts the specified element at the end of this queue if it is possible to do so immediately without violating capacity restrictions.

mixed
removeFirst()

Retrieves and removes the head of this queue.

mixed
removeLast()

Retrieves and removes the tail of this queue.

mixed|null
pollFirst()

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

mixed|null
pollLast()

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

mixed
firstElement()

Retrieves, but does not remove, the head of this queue.

mixed
lastElement()

Retrieves, but does not remove, the tail of this queue.

mixed|null
peekFirst()

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

mixed|null
peekLast()

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

Details

void clear()

Removes all items from this array.

Return Value

void

array toArray()

Returns a native PHP array representation of this array object.

Return Value

array

bool isEmpty()

Returns true if this array is empty.

Return Value

bool

bool add(mixed $element)

Ensures that this queue contains the specified element (optional operation).

Returns true if this queue changed as a result of the call. (Returns false if this queue does not permit duplicates and already contains the specified element.)

Queues that support this operation may place limitations on what elements may be added to this queue. In particular, some queues will refuse to add null elements, and others will impose restrictions on the type of elements that may be added. Queue classes should clearly specify in their documentation any restrictions on what elements may be added.

If a queue refuses to add a particular element for any reason other than that it already contains the element, it must throw an exception (rather than returning false). This preserves the invariant that a queue always contains the specified element after this call returns.

Parameters

mixed $element The element to add to this queue.

Return Value

bool true if this queue changed as a result of the call.

Exceptions

RuntimeException if a queue refuses to add a particular element for any reason other than that it already contains the element. Implementations should use a more-specific exception that extends \RuntimeException.

See also

QueueInterface::offer

mixed element()

Retrieves, but does not remove, the head of this queue.

This method differs from peek() only in that it throws an exception if this queue is empty.

Return Value

mixed the head of this queue.

Exceptions

NoSuchElementException if this queue is empty.

See also

QueueInterface::peek

bool offer(mixed $element)

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 add(), which can fail to insert an element only by throwing an exception.

Parameters

mixed $element The element to add to this queue.

Return Value

bool true if the element was added to this queue, else false.

See also

QueueInterface::add

mixed|null peek()

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

Return Value

mixed|null the head of this queue, or null if this queue is empty.

See also

QueueInterface::element

mixed|null poll()

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

Return Value

mixed|null the head of this queue, or null if this queue is empty.

See also

QueueInterface::remove

mixed remove()

Retrieves and removes the head of this queue.

This method differs from poll() only in that it throws an exception if this queue is empty.

Return Value

mixed the head of this queue.

Exceptions

NoSuchElementException if this queue is empty.

See also

QueueInterface::poll

string getType()

Returns the type associated with this queue.

Return Value

string

bool addFirst(mixed $element)

Inserts the specified element at the front of this queue if it is possible to do so immediately without violating capacity restrictions.

When using a capacity-restricted double-ended queue, it is generally preferable to use the offerFirst() method.

Parameters

mixed $element The element to add to the front of this queue.

Return Value

bool true if this queue changed as a result of the call.

Exceptions

RuntimeException if a queue refuses to add a particular element for any reason other than that it already contains the element. Implementations should use a more-specific exception that extends \RuntimeException.

bool addLast(mixed $element)

Inserts the specified element at the end of this queue if it is possible to do so immediately without violating capacity restrictions.

When using a capacity-restricted double-ended queue, it is generally preferable to use the offerLast() method.

This method is equivalent to add().

Parameters

mixed $element The element to add to the end of this queue.

Return Value

bool true if this queue changed as a result of the call.

Exceptions

RuntimeException if a queue refuses to add a particular element for any reason other than that it already contains the element. Implementations should use a more-specific exception that extends \RuntimeException.

bool offerFirst(mixed $element)

Inserts the specified element at the front of 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 addFirst(), which can fail to insert an element only by throwing an exception.

Parameters

mixed $element The element to add to the front of this queue.

Return Value

bool true if the element was added to this queue, else false.

bool offerLast(mixed $element)

Inserts the specified element at the end of 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 addLast() which can fail to insert an element only by throwing an exception.

Parameters

mixed $element The element to add to the end of this queue.

Return Value

bool true if the element was added to this queue, else false.

mixed removeFirst()

Retrieves and removes the head of this queue.

This method differs from pollFirst() only in that it throws an exception if this queue is empty.

Return Value

mixed the first element in this queue.

Exceptions

NoSuchElementException if this queue is empty.

mixed removeLast()

Retrieves and removes the tail of this queue.

This method differs from pollLast() only in that it throws an exception if this queue is empty.

Return Value

mixed the last element in this queue.

Exceptions

NoSuchElementException if this queue is empty.

mixed|null pollFirst()

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

Return Value

mixed|null the head of this queue, or null if this queue is empty.

mixed|null pollLast()

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

Return Value

mixed|null the tail of this queue, or null if this queue is empty.

mixed firstElement()

Retrieves, but does not remove, the head of this queue.

This method differs from peekFirst() only in that it throws an exception if this queue is empty.

Return Value

mixed the head of this queue.

Exceptions

NoSuchElementException if this queue is empty.

mixed lastElement()

Retrieves, but does not remove, the tail of this queue.

This method differs from peekLast() only in that it throws an exception if this queue is empty.

Return Value

mixed the tail of this queue.

Exceptions

NoSuchElementException if this queue is empty.

mixed|null peekFirst()

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

Return Value

mixed|null the head of this queue, or null if this queue is empty.

mixed|null peekLast()

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

Return Value

mixed|null the tail of this queue, or null if this queue is empty.