国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > java基础 > java中PriorityBlockingQueue的入队

java中PriorityBlockingQueue的入队

java PriorityBlockingQueue入队

头像

小妮浅浅

2021-02-08 19:16:043173浏览 · 0收藏 · 0评论

本教程操作环境:windows7系统、java10版,DELL G3电脑。

1.入队规则

(1)默认的插入规则中,新加入的元素可能会破坏小顶堆的性质,因此需要进行调整。

(2)调整的过程为:从尾部下标的位置开始,将加入的元素逐层与当前点的父节点的内容进行比较并交换,直到满足父节点内容都小于子节点的内容为止。

(3)默认的删除调整中,首先获取顶部下标和最尾部的元素内容,从顶部的位置开始,将尾部元素的内容逐层向下与当前点的左右子节点中较小的那个交换,直到判断元素内容小于或等于左右子节点中的任何一个为止。

2.入队方法

入队方法有:add(E), put(E), offer(E, timeout, TimeUnit), offer(E)

public void put(E e) {
    offer(e); // never need to block
}
 
public boolean offer(E e) {
    //判断是否为空
    if (e == null)
        throw new NullPointerException();
    //显示锁
    final ReentrantLock lock = this.lock;
    lock.lock();
    //定义临时对象
    int n, cap;
    Object[] array;
    //判断数组是否满了
    while ((n = size) >= (cap = (array = queue).length))
        //数组扩容
        tryGrow(array, cap);
    try {
        //拿到比较器
        Comparator<? super E> cmp = comparator;
        //判断是否有自定义比较器
        if (cmp == null)
            //堆上浮
            siftUpComparable(n, e, array);
        else
            //使用自定义比较器进行堆上浮
            siftUpUsingComparator(n, e, array, cmp);
        //队列长度 +1
        size = n + 1;
        //唤醒休眠的出队线程
        notEmpty.signal();
    } finally {
        //释放锁
        lock.unlock();
    }
    return true;
}

可以看出前三个方法内部都是通过 offer(e) 方法实现的。

以上就是java中PriorityBlockingQueue的入队方法,在掌握基本的使用规则后,就可以对offer(e)方法进行重点学习,然后运行相关代码进行试验。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

老婆同意了别人轮流联系我| 高压监狱2法国1时43分| 翘臀| 深田咏美在线| 女人用嘴巴吸出精子会反流吗 | 扌桑辶鬲的照片| 女性一晚上3次纵欲导致不孕| 《帐篷里的秘密》动漫| 阴部按摩出水太尴尬怎么办| 《性爽2》电影| 白带内裤拉丝尿液| 不戴套进入女友闺蜜| 黑丝| 精神小伙| 韩漫网址| 围裙| 18禁男男腐啪GV真人视频| 《帐篷里的秘密》动漫| 《尼姑庵春梦》| 《艳乳欲乱2 》动漫| 喂奶被C呻吟双腿大张H漫画| 38.JJ| 撕开老师内裤猛烈进入的日文| 女性扒开大腿内侧小肚子痒 | 把腿开大点我添添你SB| 人犬兽人在线观看免费完整| 一路向西高清下载| 爷爷的鸡又黑又长下一句怎么接| 东北娘们国语版免费播放| 漫蛙漫画(网页入口)| 我的老师中韩双字| 做爰高潮A片(毛片)| 情满四合院免费观看全集电视剧| 小妈妈2免费观看完整电视剧| 刘老汉的儿媳小雪的背景资料| 美女| 免费观看已满十八岁电视剧高清版 | 调教男爵夫人| 董丝旗袍裙跳舞| 十九岁暴躁少女CSGO免费观看| 滢滢的日记1~15笔趣阁