> 文章列表 > JavaSE-集合框架013-队列Queue及双端队列Deque

JavaSE-集合框架013-队列Queue及双端队列Deque

JavaSE-集合框架013-队列Queue及双端队列Deque

原文链接

Queue

JavaSE-集合框架013-队列Queue及双端队列Deque
JavaSE-集合框架013-队列Queue及双端队列Deque
JavaSE-集合框架013-队列Queue及双端队列Deque
JavaSE-集合框架013-队列Queue及双端队列Deque

  • 我们可以把LinkedList当作队列来用,也可以当作链表来用。
  • LinkedList只是一个实现方式,但是可以具备很多特点
    • 虽然他是一个链表,但是当你从后加从前取,就是队列(Queue)。当你从后加从后取,就是栈(Stack)

JavaSE-集合框架013-队列Queue及双端队列Deque

  • 目前只用Queue中的方法,如果定义为LinkedList的话,方法太多了

offer,poll,peek的演示

JavaSE-集合框架013-队列Queue及双端队列Deque
JavaSE-集合框架013-队列Queue及双端队列Deque

  • .poll():谁先来谁先取
    • 取出来并删掉【取出来之后把它从队列的头删掉】
    • 相当于remove
  • .peek():取出来不删掉,只是取出来引用,不删
    • 相当于get

一共五个值,取第六个时,poll()和remove()的区别

JavaSE-集合框架013-队列Queue及双端队列Deque
JavaSE-集合框架013-队列Queue及双端队列Deque

  • 如果都能取出来,呢就没什么区别
  • 但是当超过范围,取不出来的时候
    • .poll():方法会返回一个特殊值——null或者false
    • remove():方法会抛出异常
      • 所以用它之前需要做判断

Deque【队列(Queue)和栈(Stack)的结合】

JavaSE-集合框架013-队列Queue及双端队列Deque

  • 双端队列:表示两端都可以做取值或者插值的操作
  • Deque既可以当队列用,也可以当

JavaSE-集合框架013-队列Queue及双端队列Deque

代码演示

LinkedList:实现了队列(Queue)和双端队列(Deque)接口

JavaSE-集合框架013-队列Queue及双端队列Deque

  • 栈的体现(先进后出)

JavaSE-集合框架013-队列Queue及双端队列Deque

  • 队列的体现(先进先出)