黑马程序员技术交流社区
标题:
优先级队列删除队列中任意元素怎么做?
[打印本页]
作者:
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