走近java集合--学习Queque

 Queue是用于在处理之前保持元素的集合。除基本Collection操作外,队列还提供额外的插入,删除和检查操作。

Summary of Queue methods
操作类型  引发异常  返回特殊值
Insert
add(e)
offer(e)
Remove
remove()
poll()
Examine
element()
peek()

 

 

 

 

 

Summary of Queue methodsThrows exceptionReturns special valueInsertadd(e)offer(e)Removeremove()poll()Examineelement()peek()

 

上一个使用的场景:

上点原理:

队列通常(但不一定)以FIFO(先进先出)方式对元素进行排序。优先级队列除外,它们根据元素的值对元素进行排序 - 有关详细信息,请参阅“ 对象排序”部分。无论使用什么顺序,队列的头部都是通过调用remove或删除的元素poll。在FIFO队列中,所有新元素都插入队列的尾部。其他类型的队列可能使用不同的放置规则。每个Queue实现都必须指定其排序属性。

这是可能的一个Queue实施限制,它拥有的元素的数目; 这样的队列被称为有界。有些Queue实现java.util.concurrent是有限的,但实现java.util不是。

add方法Queue继承自Collection插入元素,除非它违反队列的容量限制,在这种情况下它会抛出IllegalStateException。该offer方法仅用于有界队列,不同之处add仅在于它表示无法通过返回插入元素false

 

removepoll方法都删除并返回队列的头。确切地删除哪个元素是队列的排序策略的功能。在removepoll只有当队列为空在他们的行为方式有所不同。在这种情况下,remove抛出NoSuchElementException,同时poll返回null

elementpeek方法返回,但不移除,队列的头。他们从彼此完全相同的方式也不同removepoll:如果队列为空,element抛出NoSuchElementException,而peek回报null

Queue实现通常不允许插入null元素。该LinkedList实施被改进实施Queue,是一个例外。由于历史原因,它允许null元素,但您应该避免利用它,因为null它被pollpeek方法用作特殊的返回值。

队列实现通常不定义equalshashCode方法的基于元素的版本,而是从中继承基于身份的版本Object

 

Queue接口并未定义阻塞队列的方法,这是在并行编程常见。等待元素出现或空间变得可用的这些方法在java.util.concurrent.BlockingQueue扩展的接口中定义 Queue

小demo

 

import java.util.*;

public class Countdown {
    public static void main(String[] args) throws InterruptedException {
        int time = Integer.parseInt(args[0]);
        Queue<Integer> queue = new LinkedList<Integer>();

        for (int i = time; i >= 0; i--){
            queue.add(i);
     } while (!queue.isEmpty()) { System.out.println(queue.remove()); Thread.sleep(1000); } } }

 

上一篇:Springboot项目启动原理详细解析


下一篇:Spring注解驱动开发——组件注册 @Configuration