java中的Queue队列的用法

举报
穆雄雄 发表于 2022/12/11 13:31:06 2022/12/11
【摘要】 大家好,欢迎来到雄雄的小课堂,今天给大家分享的是“java中的Queue队列的用法”前言:好多人对Queue不是很熟悉,毕竟平时也不怎么用,遇到集合要么List要么map这些常用的,殊不知,java中还有个Queue,今天,我们就来看看Queue的用法。 何为队列?队列是一种特殊数据结构,它只允许在表的前端进行删除操作,而在表的后端进行插入操作,“先进先出”的场景,和我们生活中的排队类似,谁...

在这里插入图片描述

大家好,欢迎来到雄雄的小课堂,今天给大家分享的是“java中的Queue队列的用法”

前言:好多人对Queue不是很熟悉,毕竟平时也不怎么用,遇到集合要么List要么map这些常用的,殊不知,java中还有个Queue,今天,我们就来看看Queue的用法。

何为队列?

队列是一种特殊数据结构,它只允许在表的前端进行删除操作,而在表的后端进行插入操作,“先进先出”的场景,和我们生活中的排队类似,谁先来先给谁办理。

Queue队列

Java中,LinkedList类就是实现的Queue接口,因此,我们可以把LinkedList当成队列来使用。

先来看看Queue接口的源码,然后每个方法每个方法的看:


package java.util;


public interface Queue<E> extends Collection<E> {
    
    boolean add(E e);

    
    boolean offer(E e);

   
    E remove();

    
    E poll();

    
    E element();

   
    E peek();
}

插入元素:

其中,add方法和offer方法都是可以在队列的尾部添加元素,代码如下:

public static void main(String[] args) {
		Queue<String> list = new LinkedList<String>();
		//添加元素
		list.add("a");
		list.offer("b");
		list.offer("c");
		list.offer("d");
		System.out.println("元素列表:");
		//遍历
		for (String s : list) {
			System.out.print(s+" ");
		}
	
	}

运行结果如下:
在这里插入图片描述
==add方法和offer方法的区别:==
虽然两个方法都可以实现添加,但是如果队列满的时候,使用add方法时就会报错,而offer方法就不一样了,它在添加失败时不会直接报错,而是会返回false。

删除元素:

remove方法和poll方法都是删除队列中的第一个元素,代码示例如下:

public static void main(String[] args) {
		Queue<String> list = new LinkedList<String>();
		//添加元素
		list.add("a");
		list.offer("b");
		list.offer("c");
		list.offer("d");
		System.out.println("元素列表:");
		//遍历
		for (String s : list) {
			System.out.print(s+" ");
		}
		System.out.println("\n---------\n调用remove方法");
		list.remove();
		//遍历
		for (String s : list) {
			System.out.print(s+" ");
		}
		System.out.println("\n---------\n调用poll方法");
		list.poll();
		//遍历
		for (String s : list) {
			System.out.print(s+" ");
		}
		
	}

运行结果如下:
在这里插入图片描述
==remove方法和poll方法的区别:==
当队列为空时 remove() 方法会报 NoSuchElementException 错; 而 poll() 不会奔溃,只会返回 null。

返回队列的第一个元素:

element方法和peek方法都是返回队列中的第一个元素,代码示例如下:

public static void main(String[] args) {
		Queue<String> list = new LinkedList<String>();
		//添加元素
		list.add("a");
		list.offer("b");
		list.offer("c");
		list.offer("d");
		System.out.println("元素列表:");
		//遍历
		for (String s : list) {
			System.out.print(s+" ");
		}
		System.out.println("\n---------\n调用remove方法");
		list.remove();
		//遍历
		for (String s : list) {
			System.out.print(s+" ");
		}
		System.out.println("\n---------\n调用poll方法");
		list.poll();
		//遍历
		for (String s : list) {
			System.out.print(s+" ");
		}
		System.out.println("\n-------------");
		System.out.println("队列中的第一个元素是:"+list.element());
		System.out.println("队列中的第一个元素是:"+list.peek());
		
		
	}

运行结果如下:
在这里插入图片描述
==element方法和peek方法的区别:==
和remove方法一样,当队列为空时,调用element方法会抛出异常,而peek则会返回null。

今天的分享就这些,欢迎大家关注公众号==雄雄的小课堂==获取更多精彩内容

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。