Java队列(Queue)

>>最全面的Java面试大纲及答案解析(建议收藏)  

Java队列(Queue)

前言

在我们现实生活中,大家经常都会遇到排队的事情。比如说我们排队取火车票,排队取快餐,排队办理银行业务等诸多这样的事情,这些事情都遵从一个原则,谁站在前面,谁就能先拿到东西,拿到东西后就可以离开,而后面的人要获取东西,则必须从最后一个进行排队。

什么是Queue?

队列是先进先出(FIFO)数据结构,尾部添加、头部删除(先进队列的元素先出队列),在Queue后面添加元素的过程称为Enqueue,从队列前面删除元素的过程称为Dequeue。跟我们生活中的排队类似。如下图所示:

Java队列(Queue)

首先,Queue继承自Collection,它也是集合家族的一员。Queue接口主要提供了以下方法:

//将指定的元素插入此队列,当队列已满,会抛出IllegalStateException异常
boolean add(E e);
//将指定的元素插入此队列,容量限制队列时,通常使用此方法,当队列已满,则返回false
boolean offer(E e);
//检索并删除此队列的头部,当队列为空时,会抛出NoSuchElementException异常
remove();
//检索并删除此队列的头部,当队列为空时,返回null
poll();
//检索但不删除此队列的头部,当队列为空时,会抛出NoSuchElementException异常
element();
//检索但不删除此队列的头部,当队列为空时,返回null
peek();


抛出异常 返回值
插入 add(e) offer(e)
删除 remove() poll()
检索 element() peek()

测试用例:

public static void main(String[] args) {
        Queue<String> queue = new LinkedList();
        queue.add("元素A");
        queue.add("元素B");
        queue.add("元素C");
        System.out.println(queue);
        Queue<String> queue1 = new LinkedList();
        try {
            queue1.element();
        }catch (NoSuchElementException elementException){
            System.out.println("抛出NoSuchElementException异常");
        }
        try {
            queue1.remove();
        }catch (NoSuchElementException elementException){
            System.out.println("抛出NoSuchElementException异常");
        }
    }

输出结果如下:

Java队列(Queue)

从上图中可以看到,queue是一个先进先出的队列,当队列为空时,会抛出异常。



原文始发于微信公众号(一盏红茶):Java队列(Queue)