Queue

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


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


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


JavaSE-集合框架013-队列Queue及双端队列Deque_数据结构_04

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

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

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

offer,poll,peek的演示

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


JavaSE-集合框架013-队列Queue及双端队列Deque_链表_07

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

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

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


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

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

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

JavaSE-集合框架013-队列Queue及双端队列Deque_数据结构_10

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

JavaSE-集合框架013-队列Queue及双端队列Deque_数据结构_11

代码演示

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

JavaSE-集合框架013-队列Queue及双端队列Deque_数据结构_12

  • 栈的体现(先进后出)

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

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