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);
        }
    }
  • 相关阅读:
    .NET平台系列18 .NET5的超强优势
    .NET平台系列17 .NET5中的ARM64性能
    .NET平台系列19 新世界中的.NET大统一平台架构解析
    .NET平台系列16 .NET5/Asp.Net Core 在全球Web框架权威性能测试 Web Framework Benchmarks 中的吊炸天表现
    .NET平台系列15 .NET5的吊炸天性能改进
    .NET平台系列14 .NET5中的新增功能
    从零开始学Typescript-类型注解
    从零开始学Typescript-第一个TS程序
    从零开始学Typescript-安装Typescript
    从零开始学VUE-创建VUE应用
  • 原文地址:https://www.cnblogs.com/javapath/p/14312607.html
Copyright © 2011-2022 走看看