温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java集合源码分析之Queue怎么用

发布时间:2021-09-10 10:58:22 来源:亿速云 阅读:92 作者:小新 栏目:大数据

这篇文章将为大家详细讲解有关Java集合源码分析之Queue怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

超级接口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();

超级实现类AbstractQueue

Queue的定义很简单,所以其实现类也很简单,用简单的代码做复杂的事情,值得我们学习。

AbstractQueue仅实现了addremoveelement三个方法,并且分别调用了另外一个仅细微区别的方法,我们这里只看其一

//这里我们就明白,对于有容量限制的,直接调用offer肯定会更快
public boolean add(E e) {
    if (offer(e))
        return true;
    else
        throw new IllegalStateException("Queue full");
}

此外,它还实现了clearaddAll方法,重写这些方法可以使其更符合当前场景。

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怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI