zoukankan      html  css  js  c++  java
  • Queue介绍


    美人如斯!

    前言

    队列是一种先进先出(FIFO)的数据结构,与生活中的排队类似,即先来先被服务,这样的特点决定了其具有一定的优先级含义,可以被用于任务调度等场景。队列模型如图:

    图片名称

    图1.队列模型

    java中的Queue
    1.接口类Queue

    java中通过定义Queue接口类及一系列行为来描述队列。队列的操作一般包括:出队和入队,Queue接口针对这些操作定义了三种行为:

    • 插入:入队,向队列插入一个元素;
    • 移除:出队,从队列中移除一个元素;
    • 检查:从队列中获取一个元素,但是不移除;

    其中每种行为又分为两种形式:

    • 快速失败(fail-fast),立即抛出异常
    • 返回特定的值,根据实现的不同,返回null或者false

    Queue的UML类图如下:

    图片名称

    图2.Queue UML图

    • add(): 向队列中增加一个元素,如果队列已满,将抛出IllegalStateException异常,增加成功,返回true;
    • offer(): 同add操作很类似,都是向队列中插入元素,区别在于,如果队列已满时,插入返回false;
    • remove(): 获取并移除队列头部的元素,如果队列是空,将抛出NoSuchElementException异常;
    • poll(): 同remove操作很类似,区别在于,如果队列是空,将返回null;
    • element(): 获取但不移除队头元素,如果队列是空,将抛出NoSuchElementException异常;
    • peek(): 同element操作很类似,区别在于,如果队列是空,返回null
    2.实现

    Queue的实现种类繁多,不同的实现有不同的应用场景。先通过总结性的概括下其繁杂的种类,然后再分析些常见的队列。
    根据以上UML图可以看出,根据不同的特点,Queue大致可以分为三种类型:
    Queue的UML类图如下:

    图片名称

    图2.Queue UML图

    • Queue的直接实现
    • Deque双向队列:队头和队尾均能进行入队和出队操作
    • BlockingQueue阻塞队列:阻塞式队列,某些出队和入队操作会阻塞
  • 相关阅读:
    iType.js仿输入文字效果
    css上下左右居中
    js的几种继承方式
    jquery ajax跨越
    js构造函数+原型
    less基础引用
    vw单位相关
    移动端适配(rem单位定义方法)
    第二周 day2 python学习笔记
    第一周 day1 Python学习笔记
  • 原文地址:https://www.cnblogs.com/lxyit/p/9045831.html
Copyright © 2011-2022 走看看