学习任务:

视频学习

Queue队列介绍

LinkedList队列测试

Queue接口继承了Collection接口,Queue接口有两个子接口:Deque和BlockingQueue,前者可实现队列和栈数据结构,后者是一种多线程环境下的阻塞队列接口,此处介绍双端队列,BlockingQueue在多线程章节再详细讨论。

队列是一种线性表,队列在队尾添加元素,在队头删除元素,队列具有先进先出的特点,可以结合日常生活中排队的例子去理解,如下图:

image-20201007192935357

队列在生产中的应用场景很多,比如:任务处理系统使用队列存储待处理的任务,消息系统将消息存放到队列等。

LinkedList实现了Queue接口,LinkedList可以当队列使用,如下是它的队列操作方法:

//在队列尾部添加元素
boolean add(E e)  
//在队列尾部添加元素,同boolean add(E e) 方法
boolean offer(E e) 
//检索并删除队列第一个元素,如果first为null则返回null
E poll() 
//检索并删除队列第一个元素,如果first为null则抛出NoSuchElementException异常
E remove()  
//检索但不删除队列第一个元素,如果first为null则返回null
E peek()  
//检索但不删除队列第一个元素,如果first为null则抛出NoSuchElementException异常
E element()  

下边对Queue中的接口进行测试,通过测试去熟悉队列的操作。

package com.pbteach.javase.pop.linkedlist.test2;

import java.util.LinkedList;
import java.util.Queue;

/**
 * queue普通队列测试
 * @author 攀博课堂(www.pbteach.com)
 *
 */
public class QueueTest1 {
	
	public static void main(String[] args) {
		//定义一个队列
		Queue<String> queue = new LinkedList<String>();
		//入队
		System.out.println("入队www.pbteach.com");
		queue.add("www.pbteach.com");
		System.out.println("入队pbteach.com");
		queue.add("pbteach.com");
		//出队
		System.out.println("出队"+queue.poll());
		System.out.println("出队"+queue.poll());
		System.out.println("出队"+queue.poll());//此句输出null
		System.out.println("==================================");
		//入队
		System.out.println("入队www.pbteach.com");
		queue.add("www.pbteach.com");
		System.out.println("入队pbteach.com");
		queue.add("pbteach.com");
		//出队
		System.out.println("出队"+queue.remove());
		System.out.println("出队"+queue.remove());
		try {
			System.out.println("出队"+queue.remove());//此句抛出异常
		} catch (Exception e) {
			System.out.println("remove异常");
			e.printStackTrace();
		}
		System.out.println("==================================");
		//入队
		System.out.println("入队www.pbteach.com");
		queue.add("www.pbteach.com");
		System.out.println("入队pbteach.com");
		queue.add("pbteach.com");
		//检索队头
		System.out.println("检索队头"+queue.peek());
		System.out.println("检索队头"+queue.peek());
		
	}
	


}

输出:

入队www.pbteach.com
入队pbteach.com
出队www.pbteach.com
出队pbteach.com
出队null
==================================
入队www.pbteach.com
入队pbteach.com
出队www.pbteach.com
出队pbteach.com
remove异常
==================================
入队www.pbteach.com
入队pbteach.com
检索队头www.pbteach.com
检索队头www.pbteach.com
提问-攀博课堂
我要提问 不会就问,有效沟通
关注公众号,加入微信群交流提问。 攀博课堂官方公众号
问答列表,查看本知识点所有问题