Java 中队列的使用示例及常用方法示例和比较
来源:互联网 发布:淘宝商品改折扣价影响 编辑:程序博客网 时间:2024/05/29 03:19
在java5中新增加了java.util.Queue接口,用以支持队列的常见操作。
Queue接口与List、Set同一级别,都是继承了Collection接口。
Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。
新加的方法肯定有好处,不然干嘛加他,直接用add和remove方法不就好啦。add()和remove()方法在失败的时候会抛出异常。
如果要使用前端而不移出该元素,使用 element()或者peek()方法。
值得注意的是LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
LinkedList实现了Queue接口。
附上使用的示例代码,如下:
import java.util.LinkedList;import java.util.Queue;class Hello { public static void main(String[] a) { Queue<String> queue = new LinkedList<>(); queue.offer("1");//插入一个元素 queue.offer("2"); queue.offer("3"); //打印元素个数 System.out.println("queue.size() " + queue.size());//queue.size() 3 //遍历打印所有的元素,按照插入的顺序打印 for (String string : queue) { System.out.println(string); } System.out.println("queue.size() " + queue.size());//queue.size() 3 上面只是简单循环,没改变队列 String getOneFrom1 = queue.element(); System.out.println("getOneFrom1 " + getOneFrom1);//getOneFrom1 1 因为使用前端而不移出该元素 System.out.println("queue.size() " + queue.size());//queue.size() 3 队列变啦才怪 String getOneFrom2 = queue.peek(); System.out.println("getOneFrom2 " + getOneFrom2);//getOneFrom2 1 因为使用前端而不移出该元素 System.out.println("queue.size() " + queue.size());//queue.size() 3 队列变啦才怪 String getOneFrom3 = queue.poll(); System.out.println("getOneFrom3 " + getOneFrom3);//getOneFrom3 1 获取并移出元素 System.out.println("queue.size() " + queue.size());//queue.size() 2 队列变啦 }}然后就是证明上面的结论是正确的,看看了队列这个接口的代码,如下:真不多。一共就六个方法。
//摘自Java 1.8 源码,注释摘一半不到.这个接口,就这么几个方法,好幸福啊,这么少。public interface Queue<E> extends Collection<E> { /** * Inserts the specified element into this queue if it is possible to do so * immediately without violating capacity restrictions, returning * {@code true} upon success and throwing an {@code IllegalStateException} * if no space is currently available. * ...... */ boolean add(E e);//比offer多丢了个异常,跟容量相关 /** * Inserts the specified element into this queue if it is possible to do * so immediately without violating capacity restrictions. * When using a capacity-restricted queue, this method is generally * preferable to {@link #add}, which can fail to insert an element only * by throwing an exception. * ...... */ boolean offer(E e); /** * Retrieves and removes the head of this queue. This method differs * from {@link #poll poll} only in that it throws an exception if this * queue is empty. * ...... */ E remove();//与poll的差别是当队列是空的时候,这个要报异常,下面返回null /** * Retrieves and removes the head of this queue, * or returns {@code null} if this queue is empty. * .... */ E poll(); /** * Retrieves, but does not remove, the head of this queue. This method * differs from {@link #peek peek} only in that it throws an exception * if this queue is empty. * ...... */ E element();//当队列空的时候异常,下面的只是返回null /** * Retrieves, but does not remove, the head of this queue, * or returns {@code null} if this queue is empty. * ...... */ E peek();}
0 0
- Java 中队列的使用示例及常用方法示例和比较
- java queue中队列的使用示例及常用方法示例和比较
- java中队列和栈的使用
- Java 中队列的使用
- java 中队列的使用
- Java中队列的使用
- java中队列的使用
- java中队列的使用
- Java 中队列(Queue)的使用
- java数据结构中队列的使用
- Java中队列和堆栈
- STL中队列的使用
- Tensorflow中队列的使用
- java中队列的使用方法
- VS2010中队列queue及stack的使用
- UITableView的分组示例及常用方法
- fleaphp常用函数findAll方法的使用和示例
- Mockito常用方法及示例
- java正则表达式语法详解及其使用代码实例
- 【NOI2012】美食节
- Java 并发编程:核心理论 (r)
- Android之anim跳转动画
- 酷的事
- Java 中队列的使用示例及常用方法示例和比较
- Maven的pom.xml中的scope节点和依赖传递
- python常见错误
- tornado 10、网站安全问题
- Spark——分布式并行计算概念
- Git操作详解
- 你应该知道的HTTP请求返回状态码和提示信息
- IO_02_字符流的缓冲区
- 在Eclipse里设置查看Java源码的方法