zoukankan      html  css  js  c++  java
  • Java Queue接口,Deque接口

    (一) Queue接口及LinkedList实现

    Queue接口与List、Set同一级别,都是继承了Collection接口。

    Queue接口定义的6个方法:

    添加元素:

      add:添加失败,会抛异常

      offer:添加失败,会返回false

    删除元素:

      remove:队列为空,会抛异常

      poll:队列为空,会返回null

    检查元素:

      element:返回头部元素,不删除元素,队列为空,会抛异常

      peek:返回头部元素,不删除元素,队列为空,会返回false

    下面使用LinkedList作为Queue的实现例子

    import java.util.LinkedList;
    import java.util.Queue;
    
    public class SimpleQueueTester {
        public static void main(String[] args) {
            Queue<String> queue = new LinkedList<String>();
            //add()和remove()方法在失败的时候会抛出异常,不推荐
            // 添加元素
            queue.offer("A");
            queue.offer("B");
            queue.offer("C");
            // 检查元素
            System.out.println("peek : " + queue.peek());
            // 返回第一个元素,并删除
            System.out.println("poll : " + queue.poll());
            // 查看Queue
            queue.forEach(System.out::println);
        }
    }

    (二) Deque接口及LinkedList实现

    Deque是一个线性collection,支持在两端插入和移除元素。名称 deque 是“double ended queue(双端队列)”的缩写,通常读为“deck”。

    同Queue接口一样,Deque提供插入、移除和检查元素的方法。

    每种方法都存在两种形式:一种形式在操作失败时抛出异常,另一种形式返回一个特殊值(null 或 false,具体取决于操作)。

    添加元素:

      addFirst:第一个元素,添加失败,会抛异常

      offeFirstr:第一个元素,添加失败,会返回false

      addLast:最后一个元素,添加失败,会抛异常(方法等价于Queue接口add方法)

      offerLast:最后一个元素,添加失败,会返回false(方法等价于Queue接口offer方法)

    删除元素:

      removeFirst:第一个元素,队列为空,会抛异常(方法等价于Queue接口remove方法)

      pollFirst:第一个元素,队列为空,会返回null(方法等价于Queue接口poll方法)

      removeLast:最后一个元素,队列为空,会抛异常

      pollLast:最后一个元素,队列为空,会返回null

    检查元素:

      getFirst:返回头部元素,不删除元素,队列为空,会抛异常(方法等价于Queue接口element方法)

      peekFirst:返回头部元素,不删除元素,队列为空,会返回false(方法等价于Queue接口peek方法)

      getLast:返回头部元素,不删除元素,队列为空,会抛异常

      peekLast:返回头部元素,不删除元素,队列为空,会返回false

    下面使用LinkedList作为Deque的实现例子:

    import java.util.Deque;
    import java.util.LinkedList;
    
    public class SimpleDequeTester {
        public static void main(String[] args) {
            Deque<String> deque = new LinkedList<String>();
            // 添加元素
            deque.addLast("A");
            deque.addLast("B");
            deque.addFirst("C");
            deque.forEach(System.out::println);
            // 检查元素
            System.out.println("first:" + deque.peekFirst());
            System.out.println("last:" + deque.peekLast());
            // 删除元素
            System.out.println("deque poll : " + deque.pollFirst());
            deque.forEach(System.out::println);
        }
    }
  • 相关阅读:
    Ubuntu,QT5连接MySQL
    QT添加程序图标及窗口图标
    动态库与静态库
    Windows Gdi & CDC和HDC的区别与转换
    MFC多线程各种线程用法 .
    MFC 使用控制台打印程序信息
    Windows程序员必须知道的字符编码和字符集
    MFC DestroyWindow、OnDestroy、OnClose 程序关闭相关
    Windows消息机制详解
    c c++ 宏定义中#, ##, #@的含义
  • 原文地址:https://www.cnblogs.com/javapath/p/14312607.html
Copyright © 2011-2022 走看看