这篇文章将为大家详细讲解有关Java集合源码分析之Queue怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
队列在软件开发中担任着重要的职责,java函数的调用用到了栈的技术,在处理并发问题时,BlockingQueue
很好的解决了数据传输的问题。接下来我们看看Java是如何定义队列的吧。
首先,Queue
也继承自Collection
,说明它是集合家族的一员。Queue
接口主要提供了以下方法:
//将元素插入队列 boolean add(E e); //将元素插入队列,与add相比,在容量受限时应该使用这个 boolean offer(E e); //将队首的元素删除,队列为空则抛出异常 E remove(); //将队首的元素删除,队列为空则返回null E poll(); //获取队首元素,但不移除,队列为空则抛出异常 E element(); //获取队首元素,但不移除,队列为空则返回null E peek();
Queue
的定义很简单,所以其实现类也很简单,用简单的代码做复杂的事情,值得我们学习。
AbstractQueue
仅实现了add
、remove
和element
三个方法,并且分别调用了另外一个仅细微区别的方法,我们这里只看其一
//这里我们就明白,对于有容量限制的,直接调用offer肯定会更快 public boolean add(E e) { if (offer(e)) return true; else throw new IllegalStateException("Queue full"); }
此外,它还实现了clear
与addAll
方法,重写这些方法可以使其更符合当前场景。
public void clear() { while (poll() != null) ; } public boolean addAll(Collection<? extends E> c) { if (c == null) throw new NullPointerException(); if (c == this) throw new IllegalArgumentException(); boolean modified = false; for (E e : c) if (add(e)) modified = true; return modified; }
关于“Java集合源码分析之Queue怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。