Java如何创建后进先出双端队列?

本示例向您展示如何创建LIFO(后进先出)Deque。我们调用Deque.peekLast()方法从中获取最后一个元素Deque,轮询最后一个元素,然后重复进行直到所有元素都被读取为止。

package org.nhooo.example.util;

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

public class DequeLifoDemo {

    public static void main(String[] args) {
        // 创建一个双端队列的实例,在这里我们使用LinkedList
        // 实现Deque接口的类。
        Deque<String> deque = new LinkedList<>();
        deque.add("one");
        deque.add("two");
        deque.add("three");
        deque.add("four");

        StringBuilder in = new StringBuilder("Items IN in order : ");

        // 返回此双端队列中的元素的迭代器
        // 适当的顺序
        for (String s : deque) {
            in.append(s).append(",");
        }

        in.deleteCharAt(in.length() - 1);
        System.out.println(in.toString());

        StringBuilder out = new StringBuilder("Items OUT in order: ");
        for (int i = 0; i < deque.size();) {
            out.append(deque.peekLast()).append(",");

            // 检索并删除此双端队列的最后一个元素,
            // 或如果此双端队列为空,则返回null。
            deque.pollLast();
        }

        out.deleteCharAt(out.length() - 1);
        System.out.println(out.toString());
    }
}

我们的代码片段的输出是:

Items IN in order : one,two,three,four
Items OUT in order: four,three,two,one