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

作者: Arvin Chen 分类: Java 来源: Break易站(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接口与示例

  •   本文标题:Java中的java.util.Deque接口与示例 - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/5372.html

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注

    更多阅读