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);
    }
}

 

posted on 2021-01-22 12:17  懂技术爱生活  阅读(187)  评论(0编辑  收藏  举报

导航