共同学习Java源代码-数据结构-PriorityQueue类(六)

    publicint size() {

        returnsize;

}

size方法返回size

 

publicvoid clear() {

        modCount++;

        for (inti = 0; i < size; i++)

            queue[i] = null;

        size = 0;

}

 

这个是清除所有元素的方法

修改次数自增

遍历数组 将每个元素置空

Size设为0

 

    @SuppressWarnings("unchecked")

    public E poll() {

        if (size == 0)

            returnnull;

        ints = --size;

        modCount++;

        E result = (E) queue[0];

        E x = (E) queue[s];

        queue[s] = null;

        if (s != 0)

            siftDown(0, x);

        returnresult;

    }

这是将队列头部元素删除的方法

判断size为0 就返回空值

将size自减后赋给临时变量s 修改次数自增

获取数组第一个元素 赋给临时变量result

获取数组最有一个非空元素赋给临时变量x

将x对应的数组元素置空

判断s不为0 调用siftDown方法将数组调整其他元素

最后返回result

 

    @SuppressWarnings("unchecked")

    private E removeAt(inti) {

        modCount++;

        ints = --size;

        if (s == i)

            queue[i] = null;

        else {

            E moved = (E) queue[s];

            queue[s] = null;

            siftDown(i, moved);

            if (queue[i] == moved) {

                siftUp(i, moved);

                if (queue[i] != moved)

                    returnmoved;

            }

        }

        returnnull;

}

将指定下标处的元素删除的方法

修改次数自增

size自减值赋给临时变量s

判断如果s和参数下标相等 也就是要删除数组最后一个元素 就将最后一个元素置空

如果要删除的不是数组最后一个非空元素 就获取数组最后一个非空元素 并将数组最后一个非空元素置空 调用siftDown方法调整元素 调整后判断如果参数下标处的元素为刚才的最后一个非空元素 就调用siftUp方法继续调整 再判断调整后参数下标处的元素不是最初那个最后一个非空元素了 就返回刚才那个最后一个非空元素

跳出判断 返回空 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值