黑马程序员技术交流社区

标题: 优先级队列删除队列中任意元素怎么做? [打印本页]

作者: saiqqww234    时间: 2016-5-6 23:30
标题: 优先级队列删除队列中任意元素怎么做?
在看JDK源码里优先级队列实现时,有个函数removeAt(int i)没弄懂,它删除优先级队列里下标为i的那个元素
private E removeAt(int i) {
        assert i >= 0 && i < size;
        modCount++;
        int s = --size;
        if (s == i) // removed last element
            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)
                    return moved;
            }
        }
        return null;
    }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2