• Tags
  •         
  • www.breakyizhan.com
  •    

    所述java.util.Deque中接口是的一个亚型java.util.Queue中接口。Deque与支持从数据结构的任一端添加或删除元素的双端队列相关,它可以用作队列(先进先出/ FIFO)堆栈(LIFO)。这些比Stack和LinkedList更快。
    这是Java中Deque接口的层次结构:
    Java中的java.util.Deque接口与示例
    几个重要特性是:

    • 它提供可调整大小的阵列的支持,并有助于无限制容量,因此根据用途增长阵列。
    • Array deques禁止使用Null元素,不接受任何此类元素。
    • 不支持多线程的任何并发访问。
    • 在没有外部同步的情况下,Deque不是线程安全的。

    Deque的方法

    1. add(element):向尾部添加元素。
    2. addFirst(element):向头部添加元素。
    3. addLast(element):向尾部添加元素。
    4. offer(element):向尾部添加一个元素并返回一个布尔值来解释插入是否成功。
    5. offerFirst(element):向头部添加一个元素并返回一个布尔值来解释插入是否成功。
    6. offerLast(element):向尾部添加一个元素并返回一个布尔值来解释插入是否成功。
    7. iterator():返回此双端队列的迭代器。
    8. descendingIterator():返回一个迭代器,该迭代器具有此双端队列的相反顺序。
    9. push(element):向头部添加元素。
    10. pop(element):从头部移除一个元素并返回它。
    11. removeFirst():删除头部的元素。
    12. removeLast():删除尾部的元素。
    13. poll():检索并删除此双端队列表示的队列的头部(换句话说,此双端队列的第一个元素),如果此双端队列为空,则返回null。
    14. pollFirst():检索并删除此双端队列的第一个元素,如果此双端队列为空,则返回null。
    15. pollLast():检索并删除此双端队列的最后一个元素,如果此双端队列为空,则返回null。
    16. peek():检索但不删除此双端队列表示的队列的头部(换句话说,此双端队列的第一个元素),如果此双端队列为空,则返回null。
    17. peekFirst():检索但不删除此双端队列的第一个元素,如果此双端队列为空,则返回null。
    18. peekLast():检索但不删除此双端队列的最后一个元素,如果此双端队列为空,则返回null。

    Deque接口的示例

    // Java program to demonstrate working of
    // Deque in Java
    import java.util.*;
    
    public class DequeExample
    {
        public static void main(String[] args)
        {
            Deque<String> deque = new LinkedList<String>();
    
            // We can add elements to the queue in various ways
            deque.add("Element 1 (Tail)"); // add to tail
            deque.addFirst("Element 2 (Head)");
            deque.addLast("Element 3 (Tail)");
            deque.push("Element 4 (Head)"); //add to head
            deque.offer("Element 5 (Tail)");
            deque.offerFirst("Element 6 (Head)");
            deque.offerLast("Element 7 (Tail)");
    
            System.out.println(deque + "\n");
    
            // Iterate through the queue elements.
            System.out.println("Standard Iterator");
            Iterator iterator = deque.iterator();
            while (iterator.hasNext())
                System.out.println("\t" + iterator.next());
    
    
            // Reverse order iterator
            Iterator reverse = deque.descendingIterator();
            System.out.println("Reverse Iterator");
            while (reverse.hasNext())
                System.out.println("\t" + reverse.next());
    
            // Peek returns the head, without deleting
            // it from the deque
            System.out.println("Peek " + deque.peek());
            System.out.println("After peek: " + deque);
    
            // Pop returns the head, and removes it from
            // the deque
            System.out.println("Pop " + deque.pop());
            System.out.println("After pop: " + deque);
    
            // We can check if a specific element exists
            // in the deque
            System.out.println("Contains element 3: " +
                            deque.contains("Element 3 (Tail)"));
    
            // We can remove the first / last element.
            deque.removeFirst();
            deque.removeLast();
            System.out.println("Deque after removing " +
                                "first and last: " + deque);
    
        }
    }
    
    输出:

    [Element 6 (Head), Element 4 (Head), Element 2 (Head), Element 1 (Tail), 
                       Element 3 (Tail), Element 5 (Tail), Element 7 (Tail)]
    
    Standard Iterator
        Element 6 (Head)
        Element 4 (Head)
        Element 2 (Head)
        Element 1 (Tail)
        Element 3 (Tail)
        Element 5 (Tail)
        Element 7 (Tail)
    Reverse Iterator
        Element 7 (Tail)
        Element 5 (Tail)
        Element 3 (Tail)
        Element 1 (Tail)
        Element 2 (Head)
        Element 4 (Head)
        Element 6 (Head)
    Peek Element 6 (Head)
    After peek: [Element 6 (Head), Element 4 (Head), Element 2 (Head), Element 1 (Tail), 
                                   Element 3 (Tail), Element 5 (Tail), Element 7 (Tail)]
    Pop Element 6 (Head)
    After pop: [Element 4 (Head), Element 2 (Head), Element 1 (Tail), Element 3 (Tail), 
                                                     Element 5 (Tail), Element 7 (Tail)]
    Contains element 3: true
    Deque after removing first and last: [Element 2 (Head), Element 1 (Tail), 
                                                     Element 3 (Tail), Element 5 (Tail)]

    集合层次结构中的Deque 

    Java中的java.util.Deque接口与示例

     
    转载请保留页面地址:https://www.breakyizhan.com/java/5372.html