Deque Java 源码

2020-08-20  本文已影响0人  huxq_coder

Deque 双端队列(Double Ended Queue)
允许两头都进、都出的队列。特性是 既可以添加到队首,也可以添加到队尾;既可以从队头获取,也可以从队尾获取。
Java中的双端队列是一个接口(Interface),它的实现类有ArrayDeque、LinkedList等。
文档:https://docs.oracle.com/javase/10/docs/api/java/util/Deque.html

接口方法

返回值 方法名 描述
boolean add(E e) Inserts the specified element into the queue represented by this deque (in other words, at the tail of this deque) 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.
boolean addAll​(Collection<? extends E> c) Adds all of the elements in the specified collection at the end of this deque, as if by calling addLast(E) on each one, in the order that they are returned by the collection's iterator.
void addFirst​(E e) Inserts the specified element at the front of this deque if it is possible to do so immediately without violating capacity restrictions, throwing an IllegalStateException if no space is currently available.
void addLast​(E e) Inserts the specified element at the end of this deque if it is possible to do so immediately without violating capacity restrictions, throwing an IllegalStateException if no space is currently available.
boolean contains(Object o) Returns true if this deque contains the specified element.
Iterator<E> descendingIterator() Returns an iterator over the elements in this deque in reverse sequential order.
E element() Retrieves, but does not remove, the head of the queue represented by this deque (in other words, the first element of this deque).
E getFirst() Retrieves, but does not remove, the first element of this deque.
E getLast() Retrieves, but does not remove, the last element of this deque.
Iterator<E> iterator Returns an iterator over the elements in this deque in proper sequence.
boolean offer​(E e) Inserts the specified element into the queue represented by this deque (in other words, at the tail of this deque) if it is possible to do so immediately without violating capacity restrictions, returning true upon success and false if no space is currently available.
boolean offerFirst​(E e) Inserts the specified element at the front of this deque unless it would violate capacity restrictions.
boolean offerLast​(E e) Inserts the specified element at the end of this deque unless it would violate capacity restrictions.
E peek() Retrieves, but does not remove, the head of the queue represented by this deque (in other words, the first element of this deque), or returns null if this deque is empty.
E peekFirs() Retrieves, but does not remove, the first element of this deque, or returns null if this deque is empty.
E peekLast() Retrieves, but does not remove, the last element of this deque, or returns null if this deque is empty.
E pol() Retrieves and removes the head of the queue represented by this deque (in other words, the first element of this deque), or returns null if this deque is empty.
E pollFirst() Retrieves and removes the first element of this deque, or returns null if this deque is empty.
E pollLast() Retrieves and removes the last element of this deque, or returns null if this deque is empty.
E pop() Pops an element from the stack represented by this deque.
void push​(E e) Pushes an element onto the stack represented by this deque (in other words, at the head of this deque) if it is possible to do so immediately without violating capacity restrictions, throwing an IllegalStateException if no space is currently available.
E remove() Retrieves and removes the head of the queue represented by this deque (in other words, the first element of this deque).
boolean remove​(Object o) Removes the first occurrence of the specified element from this deque.
E removeFirst() Retrieves and removes the first element of this deque.
boolean removeFirstOccurrence​(Object o) Removes the first occurrence of the specified element from this deque.
E removeLast() Retrieves and removes the last element of this deque.
boolean removeLastOccurrence​(Object o) Removes the last occurrence of the specified element from this deque.
int size() Returns the number of elements in this deque.
import java.util.Deque;
import java.util.LinkedList;

public class DequeDemo{
    public static void main(String[] args) {
        Deque<String> deque = new LinkedList<>();

        // 添加
        System.out.println("offerLast()  " + deque.offerLast("A"));
        System.out.println("offerLast()  " + deque.offerLast("B")); 
        System.out.println("offerFirst()  " + deque.offerFirst("C")); 
        System.out.println(deque);
        deque.addFirst("E"); 
        deque.addFirst("F"); 
        deque.addLast("G"); 
        System.out.println(deque);
        
        System.out.println("getFirst() " + deque.getFirst());
        System.out.println("getLast() " + deque.getLast());
            
        System.out.println("pollFirst()  " + deque.pollFirst());
        System.out.println("pollLast()  " + deque.pollLast());
        System.out.println(deque);
        System.out.println("peekFirst()  " + deque.peekFirst());
        System.out.println("peekLast()  " + deque.peekLast());
        System.out.println("pop()  " + deque.pop());
        
        System.out.println(deque);
        System.out.println("removeFirst()  " + deque.removeFirst());
        System.out.println("removeLast()  " + deque.removeLast());
        
        System.out.println("pollFirst()  " + deque.pollFirst());
        System.out.println("pollFirst()  " + deque.pollFirst());
        try{
            System.out.println("removeFirst()  " + deque.removeFirst());
            System.out.println("removeLast()  " + deque.removeLast());
        } catch (Exception e) {
            System.out.println("exception " + e);
        }
        System.out.println("removeLast()  " + deque.poll());
    }
}
上一篇下一篇

猜你喜欢

热点阅读