• Java双端队列


    *Java双端队列的知识

    Deque 接口是 double ended queue 的缩写,即双端队列,支持在队列的两端插入和删除元素,继承 Queue接口。
    public interface Deque extends Queue

    Deque 的 12 种方法总结如下:

    • 插入:
      • 如果操作失败则抛出异常
        • void addFirst(Object e)
        • void addLast(Object e)
      • 如果操作失败则返回一个特殊值(null 或 false)
        • boolean offerFirst(Object e)
        • boolean offerLast(Object e);
    • 删除:
      • 如果操作失败则抛出异常
        • Object removeFirst()
        • Object removeLast()
      • 如果操作失败则返回一个特殊值(null 或 false)
        • Object pollFirst()
        • Object pollLast()
    • 获取:
      • 如果操作失败则抛出异常
        • Object getFirst()
        • Object getLast()
      • 如果操作失败则返回一个特殊值(null 或 false)
        • Object peekFirst()
        • Object peekLast()

    Deque 与 List 不同,该接口不支持下标访问元素。Deque 的实现并不严格要求禁止插入元素 null,但强烈鼓励不插入 null。任何 Deque 的实现都强烈鼓励不要插入 null,因为 null 是多种方法作为一种特殊返回值来表示 Deque 为空。

    ArrayDeque 和 LinkedList 类是 Deque 接口的两个实现类:

    • ArrayDeque 类由数组支持。适合当作堆栈使用。
    • LinkedList 类由链表支持。适合当作FIFO队列使用。

    *代码

    import java.util.Deque;
    import java.util.LinkedList;
    
    public class DequeTest {
    
        public static void main(String[] args) {
            
            Deque<String> deque = new LinkedList<String>();
            deque.add("d");
            deque.add("e");
            deque.add("f");
            
            //从队首取出元素,不会删除
            System.out.println("队首取出元素:"+deque.peek());
            System.out.println("队列为:"+deque);
            
            //从队首加入元素(队列有容量限制时用,无则用addFirst)
            deque.offerFirst("c");
            System.out.println("队首加入元素后为:"+deque);
            //从队尾加入元素(队列有容量限制时用,无则用addLast)
            deque.offerLast("g");
            System.out.println("队尾加入元素后为:"+deque);
            
            //队尾加入元素
            deque.offer("h");
            System.out.println("队尾加入元素后为:"+deque);
            
            //获取并移除队列第一个元素,pollFirst()也是,区别在于队列为空时,removeFirst会抛出NoSuchElementException异常,后者返回null
            deque.removeFirst();
            System.out.println("获取并移除队列第一个元素后为:"+deque);
            
            //获取并移除队列第一个元素,此方法与pollLast 唯一区别在于队列为空时,removeLast会抛出NoSuchElementException异常,后者返回null
            deque.removeLast();
            System.out.println("获取并移除队列最后一个元素后为:"+deque);
            
            //获取队列第一个元素.此方法与 peekFirst 唯一的不同在于:如果此双端队列为空,它将抛出NoSuchElementException,后者返回null
            System.out.println("获取队列第一个元素为:"+deque.getFirst());
            System.out.println("获取队列第一个元素后为:"+deque);
            
            //获取队列最后一个元素.此方法与 peekLast 唯一的不同在于:如果此双端队列为空,它将抛出NoSuchElementException,后者返回null
            System.out.println("获取队列最后一个元素为:"+deque.getLast());
            System.out.println("获取队列第一个元素后为:"+deque);
            
            //循环获取元素并在队列移除元素
            while(deque.size()>0){
                System.out.println("获取元素为:"+ deque.pop()+" 并删除");
            }
            System.out.println("队列为:"+deque);
        }
    
    }
  • 相关阅读:
    DES加密/解密类。
    断言与单元测试
    空对象模式和扩展方法的NULL验证
    防御性判断
    行为型-观察者模式、基于事件的观察者
    【Python学习日记】B站小甲鱼:继承,super和多重继承
    【Python学习日记】B站小甲鱼:类和对象
    【Python学习日记】B站小甲鱼:图形界面入门easygui
    【Python学习日记】B站小甲鱼:丰富的else语句
    【Python学习日记】B站小甲鱼:永久储存(pickle模块)和异常处理(exception)
  • 原文地址:https://www.cnblogs.com/walxt/p/12442506.html
Copyright © 2020-2023  润新知