大家好,欢迎来到雄雄的小课堂,今天给大家分享的是“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。