Queue队列

来源:互联网 发布:unity3d文件手机怎么看 编辑:程序博客网 时间:2024/06/06 02:48

Queue队列

概述

队列是一个典型的先进先出(FIFO)的容器。即从容器的一端放入事物,从另一端取出,并且事物放入的顺序与取出的顺序是相同的。队列常被当作一种可靠的将对象从程序的某个区域传输到另一个区域的途径。

所有父接口

  1. Collection
  2. Iterable

所有子接口

  1. BlockingDeque
  2. BlockingQueue
  3. Deque
  4. TransferQueue

所有已实现的类

  1. AbstractQueue
  2. ArrayBlockingQueue
  3. ArrayDeque
  4. ConcurrentLinkedDeque
  5. ConcurrentLinkedQueue
  6. DelayQueue
  7. LinkedBlockingDeque
  8. LinkedBlockingQueue
  9. LinkedList
  10. LinkedTransferQueue
  11. PriorityBlockingQueue
  12. PriorityQueue
  13. SynchronousQueue

方法介绍

  • boolean add(E e)
    在允许的情况下,将一个元素插入到队尾,或者抛出IIIegaISlabEepeplian异常
  • boolean offer(E e)
    在允许的情况下,将一个元素插入到队尾,或者返回false.
  • E remove()
    将移除并返回队头。如果队列为空,则会抛出NoSuchElementException的异常
  • E poll()
    将移除并返回队头。如果队列为空,则返回null
  • E element()
    在不移除元素的情况下返回队头。如果队列为空,则会抛出NoSuchElementException的异常
  • E peek()
    在不移除元素的情况下返回队头。如果队列为空,则返回null

代码示例

import java.util.LinkedList;import java.util.Queue;import java.util.Random;public class QueueDemo {    /**     * 用于输出队列     * @param queue     */    private static void printQ(Queue queue) {        while (queue.peek() != null) {            System.out.print(queue.remove() + " ");        }    }    public static void main(String[] args) {        Queue<Character> queue = new LinkedList<Character>();        String str = "QueueCharacter";        for (char c : str.toCharArray()) {            queue.offer(c); // 向队列添加元素        }        // 输出队列元素//      printQ(queue);        // 不移除元素的情况下,返回队头        System.out.println(queue.peek());        // 移除并返回队头,同时打印队列        System.out.println(queue.poll());        printQ(queue);    }}

注意:
以上信息均采用JDK 8版本

参考链接:https://docs.oracle.com/javase/8/docs/api/

源代码链接:https://github.com/myNameIssls/javase-study/blob/master/javase-multithreading/src/main/java/cn/tyrone/javase/Queue/QueueDemo.java

原创粉丝点击