Documentation

DoubleEndedQueueInterface extends QueueInterface

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.

Tags
template

T

extends

QueueInterface<T>

Table of Contents

add()  : bool
Ensures that this queue contains the specified element (optional operation).
addFirst()  : bool
Inserts the specified element at the front of this queue if it is possible to do so immediately without violating capacity restrictions.
addLast()  : bool
Inserts the specified element at the end of this queue if it is possible to do so immediately without violating capacity restrictions.
clear()  : void
Removes all items from this array.
element()  : T
Retrieves, but does not remove, the head of this queue.
firstElement()  : T
Retrieves, but does not remove, the head of this queue.
getType()  : string
Returns the type associated with this queue.
isEmpty()  : bool
Returns `true` if this array is empty.
lastElement()  : T
Retrieves, but does not remove, the tail of this queue.
offer()  : bool
Inserts the specified element into this queue if it is possible to do so immediately without violating capacity restrictions.
offerFirst()  : bool
Inserts the specified element at the front of this queue if it is possible to do so immediately without violating capacity restrictions.
offerLast()  : bool
Inserts the specified element at the end of this queue if it is possible to do so immediately without violating capacity restrictions.
peek()  : T|null
Retrieves, but does not remove, the head of this queue, or returns `null` if this queue is empty.
peekFirst()  : T|null
Retrieves, but does not remove, the head of this queue, or returns `null` if this queue is empty.
peekLast()  : T|null
Retrieves, but does not remove, the tail of this queue, or returns `null` if this queue is empty.
poll()  : T|null
Retrieves and removes the head of this queue, or returns `null` if this queue is empty.
pollFirst()  : T|null
Retrieves and removes the head of this queue, or returns `null` if this queue is empty.
pollLast()  : T|null
Retrieves and removes the tail of this queue, or returns `null` if this queue is empty.
remove()  : T
Retrieves and removes the head of this queue.
removeFirst()  : T
Retrieves and removes the head of this queue.
removeLast()  : T
Retrieves and removes the tail of this queue.
toArray()  : array<array-key, T>
Returns a native PHP array representation of this array object.

Methods

add()

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

public add(T $element) : bool

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
$element : T

The element to add to this queue.

Tags
see
self::offer()
throws
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.

Return values
bool

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

addFirst()

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

public addFirst(T $element) : bool

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

Parameters
$element : T

The element to add to the front of this queue.

Tags
throws
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.

Return values
bool

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

addLast()

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

public addLast(T $element) : bool

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

This method is equivalent to add().

Parameters
$element : T

The element to add to the end of this queue.

Tags
throws
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.

Return values
bool

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

clear()

Removes all items from this array.

public clear() : void
Return values
void

element()

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

public element() : T

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

Tags
see
self::peek()
throws
NoSuchElementException

if this queue is empty.

Return values
T

the head of this queue.

firstElement()

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

public firstElement() : T

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

Tags
throws
NoSuchElementException

if this queue is empty.

Return values
T

the head of this queue.

getType()

Returns the type associated with this queue.

public getType() : string
Return values
string

isEmpty()

Returns `true` if this array is empty.

public isEmpty() : bool
Return values
bool

lastElement()

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

public lastElement() : T

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

Tags
throws
NoSuchElementException

if this queue is empty.

Return values
T

the tail of this queue.

offer()

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

public offer(T $element) : bool

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
$element : T

The element to add to this queue.

Tags
see
self::add()
Return values
bool

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

offerFirst()

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

public offerFirst(T $element) : bool

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
$element : T

The element to add to the front of this queue.

Return values
bool

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

offerLast()

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

public offerLast(T $element) : bool

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
$element : T

The element to add to the end of this queue.

Return values
bool

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

peek()

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

public peek() : T|null
Tags
see
self::element()
Return values
T|null

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

peekFirst()

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

public peekFirst() : T|null
Return values
T|null

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

peekLast()

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

public peekLast() : T|null
Return values
T|null

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

poll()

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

public poll() : T|null
Tags
see
self::remove()
Return values
T|null

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

pollFirst()

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

public pollFirst() : T|null
Return values
T|null

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

pollLast()

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

public pollLast() : T|null
Return values
T|null

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

remove()

Retrieves and removes the head of this queue.

public remove() : T

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

Tags
see
self::poll()
throws
NoSuchElementException

if this queue is empty.

Return values
T

the head of this queue.

removeFirst()

Retrieves and removes the head of this queue.

public removeFirst() : T

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

Tags
throws
NoSuchElementException

if this queue is empty.

Return values
T

the first element in this queue.

removeLast()

Retrieves and removes the tail of this queue.

public removeLast() : T

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

Tags
throws
NoSuchElementException

if this queue is empty.

Return values
T

the last element in this queue.

toArray()

Returns a native PHP array representation of this array object.

public toArray() : array<array-key, T>
Return values
array<array-key, T>

Search results