首页 > 编程语言 >Java队列Queue简述

Java队列Queue简述

时间:2023-10-25 09:22:35浏览次数:36  
标签:queue Java offer 队列 元素 Queue 简述 poll

概述

​ Queue是java中实现队列的接口,它总共只有6个方法,我们一般只用其中3个就可以了。Queue的实现类有LinkedListPriorityQueue最常用的实现类是LinkedList


Queue的6个方法分类

抛出异常 返回特殊值
插入 add(e) offer(e)
删除 remove() poll()
检查 element() peek()
  • 添加元素(压入):add()offer()

    相同:未超出容量,从队尾添加元素,返回添加的那个元素。

    区别:超出容量时,add()方法会抛出异常,offer()方法则返回false

  • 删除元素(弹出):remove()poll()

    相同:容量大于0的时候,删除队头元素并返回该被删除的元素。

    区别:在容量为0的时候,remove()会抛出异常,poll()返回false

  • 获取队头元素(不删除):element()peek()

    相同:容量大于0的时候,都返回队头元素,但不删除

    区别:容量为0的时候,element()会抛出异常,peek()返回null


Queue是一个先进先出的队列

​ 队列通常(但并非一定)以 FIFO(先进先出)的方式排序各个元素。不过优先级队列和 LIFO 队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO(后进先出)的方式对元素进行排序。无论使用哪种排序方式,队列的头 都是调用 remove() 或 poll() 所移除的元素。在 FIFO 队列中,所有的新元素都插入队列的末尾。其他种类的队列可能使用不同的元素放置规则。每个 Queue 实现必须指定其顺序属性。

例子:

public class QueueTest {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList();
        queue.offer("元素A");
        queue.offer("元素B");
        queue.offer("元素C");
        queue.offer("元素D");
        queue.offer("元素E");
        while (queue.size() > 0) {
            String element = queue.poll();
            System.out.println(element);
        }
    }
}

输出:

元素A
元素B
元素C
元素D
元素E

Process finished with exit code 0



参考资料:https://blog.csdn.net/devnn/article/details/82591349

标签:queue,Java,offer,队列,元素,Queue,简述,poll
From: https://www.cnblogs.com/Enid/p/17786328.html

相关文章

  • java学习-二维数组&面向对象
    动态初始化格式数据类型[][]变量名=new数据类型[m][n]m表示这个二位数组可以存放多少个以为数组n表示里面的每个一维数组可以存放多少个元素比如int[][]arr=new[3][2]这个就代表里面有3个一维数组,每个一维数组可以存放2个元素存数据arr[0][0]=11arr[0][1]=......
  • javaweb第11章源码
    javaweb第11章源码下载链接:https://wwpv.lanzoue.com/ifkAa1crixqd文件结构CHAPTER11│.classpath│.project│├─.settings│.jsdtscope│org.eclipse.jdt.core.prefs│org.eclipse.wst.common.component│org.eclipse.wst.common.proje......
  • JavaScript知识点
    有哪些数据类型根据JavaScript中的变量类型传递方式,分为基本数据类型和引用数据类型两大类七种。基本数据类型包括Undefined、Null、Boolean、Number、String、Symbol(ES6新增)六种。引用数据类型只有Object—种,主要包括对象、数组和函数。基本数据类型和引用数据类型的区别两者......
  • 数据结构之链表(Java)
    一:概述数组是严格的正规军,那么链表就是灵活多变的地下党链表是一种在物理上非连续、非顺序的数据结构,由若干节点(node)所组成单向链表的每一个节点又包含两部分,一部分是存放数据变量的data,另一部分是指向下一节点的指针next.二:链表的具体说明<1>链表的基本操作总括*链表的基......
  • Java内部类
    Java内部类详解详细解释内部内的一些使用规则的原因概览定义:在一个类的内部定义的类。它的定义位于另一个类的内部,并且可以访问外部类的成员,包括私有成员。为什么要用我觉得一个是为了符合OOP的封装原则,因为毕竟也可以直接把内部类函数和成员放到外面写。另外就是既然可......
  • javaweb学习每日总结-第四天
    第四天学习Mybatis 今天在昨天大概学习完mybatis的概念之后,今天跟着案例敲了一边代码,自己亲自操作了一边数据库,过程相对比较顺利,下面我说说自己的感悟把,首先敲代码之前要配置好自己的mybatis.xml文件,然后创建Java类来写方法和对象,创建xml文件,然后用mapper接口将两个文件连接......
  • Java基础 缓冲流为什么能提高性能?
    缓冲流为什么能提高性能?知识点:1个字节=1B缓冲流自带长度为8192的缓冲区,字节缓冲流的缓冲区是byte类型的,是长度为8192的字节数组,为8K;而字符缓冲流的缓冲区是char类型的,是长度为8192的字符数组,为16K,因为 Java中一个字符占两个字节通过缓冲区可以显著提高字节流......
  • java复习
    内部类有哪些分类?在Java中,可以将一个类的定义放在另外一个类的定义内部,这就是内部类。内部类本身就是类的一个属性,与其他属性定义方式一致。内部类的分类一般主要有四种:⚫成员内部类⚫局部内部类⚫匿名内部类⚫静态内部类静态内部类就是定义在类内部的静态类,静态内部......
  • Java基础 字符缓冲流
      字符流的基本流本身其实已经有缓冲区了,所以字符缓冲流提高的效率不是很明显。 字符缓冲流的构造方法:字符缓冲输入流:public BufferedReader(Reader r)  →  把基本流变成高级流字符缓冲输出流:public BufferedWriter(Writer r)  →  把基本流变成......
  • Java EasyExcel 随记
    JAR<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.7</version></dependency>入口EasyExcel.write(response.getOutputStream(),导出实体类.class).sheet("......