扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章将为大家详细讲解有关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怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流