• 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);
        }
    }
  • 相关阅读:
    如何优化电量
    140816 记录
    git 提交远程
    HttpClient post json
    JAVA static 作用
    Android Configuration change属性
    Android横竖屏切换处理
    android 多语言版本开发
    JAVA线程池简介
    30个你 “ 不可能全部会做 ” 的javascript题目-答案解释
  • 原文地址:https://www.cnblogs.com/javapath/p/14312607.html
Copyright © 2020-2023  润新知