共同学习Java源代码-数据结构-PriorityQueue类(六)
2018-01-19 07:20
405 查看
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方法继续调整 再判断调整后参数下标处的元素不是最初那个最后一个非空元素了 就返回刚才那个最后一个非空元素
跳出判断 返回空
这个是清除所有元素的方法
修改次数自增
遍历数组 将每个元素置空
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方法继续调整 再判断调整后参数下标处的元素不是最初那个最后一个非空元素了 就返回刚才那个最后一个非空元素
跳出判断 返回空
相关文章推荐
- 共同学习Java源代码-数据结构-PriorityQueue类(八)
- 共同学习Java源代码-数据结构-PriorityQueue类(七)
- 共同学习Java源代码-数据结构-PriorityQueue类(一)
- 共同学习Java源代码-数据结构-PriorityQueue类(三)
- 共同学习Java源代码-数据结构-PriorityQueue类(五)
- 共同学习Java源代码-数据结构-PriorityQueue类(四)
- 共同学习Java源代码-数据结构-PriorityQueue类(二)
- 共同学习Java源代码--数据结构--LinkedList类(六)
- 共同学习Java源代码--数据结构--AbstractList抽象类(六)
- 共同学习Java源代码--数据结构--AbstractList抽象类(二)
- 共同学习Java源代码--数据结构--ArrayList类(四)
- 共同学习Java源代码--数据结构--List接口
- 共同学习Java源代码--数据结构--LinkedList类(八)
- 共同学习Java源代码--数据结构--ArrayList类(五)
- 共同学习Java源代码--数据结构--LinkedList类(一)
- 共同学习Java源代码--数据结构--ArrayList类(一)
- 共同学习Java源代码--数据结构--AbstractList抽象类(三)
- 共同学习Java源代码--数据结构--开篇语
- 共同学习Java源代码--数据结构--AbstractCollection抽象类(一)
- 共同学习Java源代码--数据结构--AbstractList抽象类(四)