美文网首页
【JAVA】Java 实例 - 队列(Queue)用法

【JAVA】Java 实例 - 队列(Queue)用法

作者: 李翾 | 来源:发表于2019-03-11 16:51 被阅读0次

队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。

LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。

以下实例演示了队列(Queue)的用法:

  public static void main(String[] args) {
        //add()和remove()方法在失败的时候会抛出异常(不推荐)
        Queue<String> queue = new LinkedList<String>();
        //添加元素
        queue.offer("a");
        queue.offer("b");
        queue.offer("c");
        queue.offer("d");
        queue.offer("e");
        for(String q : queue){
            System.out.println(q);
        }
        System.out.println("===");
        System.out.println("poll="+queue.poll()); //返回第一个元素,并在队列中删除
        for(String q : queue){
            System.out.println(q);
        }
        System.out.println("===");
        System.out.println("element="+queue.element()); //返回第一个元素 
        for(String q : queue){
            System.out.println(q);
        }
        System.out.println("===");
        System.out.println("peek="+queue.peek()); //返回第一个元素 
        for(String q : queue){
            System.out.println(q);
        }
    }

往队列中添加元素有两个方法,分布是add和offer方法,两者的入参和返回值都一样,或许很多同学都奇怪,为什么,要有这两个功能类似(都是添加元素),但方法名不一样的方法,看看源码的注释

以下为Queue接口中方法定义:

public interface Queue<E> extends Collection<E> {
  
     /*
    *  add方法,在不违背队列的容量限制的情况,往队列中添加一个元素, 如果添加成功则返回true,  如果因为容量
    * 限制添加失败了,则抛出IllegalStateException异常    
    * 
    *  在有容量限制的队列中,最好使用offer方法
    *  另外,add方法相对与offer方法而言,有一个专门抛出的异常IllegalStateException,代表由于容量限制,
    * 导致不能添加元素的异常,接口中可能看不出,等看具体实现就明白了
    */
    boolean add(E e);

   /*
    *
    *  offer方法在不违背容量限制的情况,往队列中添加一个元素,如果添加元素成功,返回true,
    *  如果因为空间限制,无法添加元素则,返回false;
    *  
    *  在有容量限制的队列中,这个offer方法优于add方法,结合上文中add的注释,可知,
    *  在容量限制的队列中, add方法通过抛异常的方式表示容量已满,offer方法通过返回
    *  false的方式表示容量已满,抛异常处理更加耗时,offer直接返回false的方式更好
    * 
    */**
    boolean offer(E e);

   /*
    *  删除队列头的元素,这个方法和poll方法的不同之处在于,这个方法在队列为
    * 空的时候选择抛异常
    * 
    */
    E remove();

   /*
    *  poll方法也是删除队列头的元素,如果队列为空的化,返回null
    * 
    */
    E poll();

   /*
    *  返回队列头元素,这个方法和peek方法的区别在于,入股队列为空,将抛异常
    * 
    */
    E element();

   /*
    *  返回队列头元素,如果队列为空,将返回空
    * 
    */
    E peek();
}

总结

  1. queue的增加元素方法add和offer的区别在于,add方法在队列满的情况下将选择抛异常的方法来表示队列已经满了,而offer方法通过返回false表示队列已经满了;在有限队列的情况,使用offer方法优于add方法;
  2. remove方法和poll方法都是删除队列的头元素,remove方法在队列为空的情况下将抛异常,而poll方法将返回null;
  3. element和peek方法都是返回队列的头元素,但是不删除头元素,区别在与element方法在队列为空的情况下,将抛异常,而peek方法将返回null.

相关文章

  • 【JAVA】Java 实例 - 队列(Queue)用法

    队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。 LinkedList类实现了Q...

  • Java中的队列Queue总结

    标签(空格分隔): 数据结构 Java进阶 Java中的队列Queue 我们都知道队列(Queue)是一种先进先出...

  • 队列

    java队列——queue详细分析

  • Java 多线程、Queue学习,CAS学习

    主题一:Queue: Java并发(10)- 简单聊聊JDK中的七大阻塞队列解读 Java 并发队列 Blocki...

  • java队列 Queue

    1、阻塞队列 jdk1.5一共有5个阻塞队列1)ArrayBlockingQueue2)LinkedBlockin...

  • java队列Queue

    在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queu...

  • 数据结构之Java Queue

    本文从通过Java Array 实现一个简单的队列和循环队列,最后对Java Queue 接口及其子类的特点进行一...

  • 队列

    什么是Java优先级队列(Priority Queue)? 考察点:队列参考回答: PriorityQueue是一...

  • Java集合--Queue队列介绍

    4 Queue队列 前面几篇,我们介绍了Java集合中常用到的对象。本篇中,我们再来说说Queue队列的故事。 对...

  • String 总结

    Java String类 Java lang.String类用法实例教程。 简介java.lang.String类...

网友评论

      本文标题:【JAVA】Java 实例 - 队列(Queue)用法

      本文链接:https://www.haomeiwen.com/subject/qovbpqtx.html