zoukankan      html  css  js  c++  java
  • java中的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。

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

  • 相关阅读:
    2021年gitbook的安装报错,一次解决方案!
    配置docker看我一篇就够了----Windows10上Hyper-V 或者 WSL2配置Docker+Vscode完整配置
    React.JS详细分析token存储以及提取的方法,其中涉及技术(localStorage、react-cookies、immutable、JSON)
    GO语言: 双单链表、队列、进出栈打造一个简易的数据结构库 以及测试你的程序是否存在BUG!
    Redis管道操作
    Jedis连接池操作
    java连接Redis存储对象或值,用byte[]、String两种方式
    template标签配合vue用法
    linux系统中ssh免密登录
    linux系统scp、rsync拷贝操作命令使用
  • 原文地址:https://www.cnblogs.com/a1111/p/14877353.html
Copyright © 2011-2022 走看看