Java中的Deque接口及其示例

Java中的Deque接口及其示例

在Java中,Deque是一个双端队列接口,它表示元素按照顺序排序的线性集合。Deque界面扩展了Queue界面,它提供了将元素插入队列的两端的操作。该接口还支持队列的所有其他操作,例如检索,删除和大小估算。该接口定义了两端特定的方法,以及一些Queue方法的变体。

Deque的方法

Deque接口定义了以下方法:

方法 描述
void addFirst(E e) 将元素插入此deque的开头
void addLast(E e) 将元素插入此deque的末尾
boolean offerFirst(E e) 在此deque的开头插入指定元素。
boolean offerLast(E e) 在此deque的末尾插入指定元素。
E removeFirst() 检索并删除此deque的第一个元素
E removeLast() 检索并删除此deque的最后一个元素
E pollFirst() 检索并删除此deque的第一个元素;如果deque为空,则返回null
E pollLast() 检索并删除此deque的最后一个元素;如果deque为空,则返回null
E getFirst() 检索但不删除此deque的第一个元素。
E getLast() 检索但不删除此deque的最后一个元素。
E peekFirst() 检索但不删除此deque的第一个元素;如果deque为空,则返回null
E peekLast() 检索但不删除此deque的最后一个元素;如果deque为空,则返回null
boolean removeFirstOccurrence(Object o) 从deque中删除第一次出现的指定元素(从头部到尾部遍历deque时)。
boolean removeLastOccurrence(Object o) 从deque中删除最后一次出现的指定元素(从头部到尾部遍历deque时)。
boolean add(E e) 将指定元素添加到此deque的末尾。
boolean offer(E e) 将指定元素添加到此deque的末尾。
E remove() 检索并删除此deque的头部。
E poll() 检索并删除此deque的头部;如果deque为空,则返回null。
E element() 检索但不删除此deque的头部。
E peek() 检索但不删除此deque的头部;如果deque为空,则返回null。
void push(E e) 将元素推入此deque的堆栈层次结构中,也就是在deque的头部插入一个元素。
E pop() 从此deque表示的堆栈处弹出一个元素,也就是把deque的头部元素移除掉。
boolean contains(Object o) 如果此deque包含指定元素,则返回true。
int size() 返回deque中的元素数。
Iterator<E> iterator() 返回一个按元素插入顺序遍历此deque中元素的迭代器。
Iterator<E> descendingIterator() 返回一个按元素逆序遍历此deque中元素的迭代器。
void addLast(E e) - 与add(E e)方法等效
E getFirst() - 与element()方法等效
void addFirst(E e) - 与push(E e)方法等效

示例代码

Deque是可以用作栈或队列的,具体是哪个取决于使用哪些方法。下面是一些示例代码,演示了如何使用Deque接口。

1. 使用Deque作为队列

import java.util.Deque;
import java.util.LinkedList;

public class DequeQueueExample {

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

        // 添加元素到队列
        queue.add("Java");
        queue.add("C++");
        queue.add("Python");

        // 获取队列的第一个元素,不删除
        System.out.println("First element of queue: " + queue.peek());

        // 获取并删除队首元素
        String firstElement = queue.poll();
        System.out.println("Removed first element of queue: " + firstElement);

        // 队列中添加一个新元素
        queue.offer("JavaScript");

        // 遍历队列中的元素
        System.out.println("All elements of queue:");
        for (String element : queue) {
            System.out.println(element);
        }
    }

}

此代码将Deque用作队列,使用add方法添加元素,并使用peek获取第一个元素。然后,使用poll方法删除并获取队列中的第一个元素,并使用offer方法将新元素添加到队列末尾。最后,使用for-each循环遍历队列中的所有元素。

2. 使用Deque作为栈

import java.util.Deque;
import java.util.LinkedList;

public class DequeStackExample {

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

        // 将元素推入栈中
        stack.push("Java");
        stack.push("C++");
        stack.push("Python");

        // 获取栈顶元素,不删除
        System.out.println("Top element of stack: " + stack.peek());

        // 获取并删除栈顶元素
        String topElement = stack.pop();
        System.out.println("Removed top element of stack: " + topElement);

        // 将新元素推入栈中
        stack.push("JavaScript");

        // 遍历栈中的所有元素
        System.out.println("All elements of stack:");
        for (String element : stack) {
            System.out.println(element);
        }
    }

}

此代码演示了如何将Deque用作栈。它使用push方法将元素推入栈中,并使用peek获取栈顶元素。然后,使用pop方法获取并删除栈顶元素,并使用push方法将新元素推入栈顶。最后,使用for-each循环遍历栈中的所有元素。

结论

以上就是使用Deque接口的简单示例代码,我们可以看到,在Java中Deque接口是非常有用的,它可以作为队列或栈来使用。我们可以使用它的方法在队列的两侧添加元素、删除元素、获取元素等操作。掌握了Deque接口的使用方法,你的Java编程能力将更进一步。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程