JAVA 堆的使用 (大顶堆,小顶堆)即优先队列 再TopK 和求中位数中用此种数据结构
程序员文章站
2024-02-12 22:46:04
...
学习JAVA这么久了(从时间跨度上来看),一直磨磨蹭蹭的没有写博客,希望今天开始,不如正规吧
JAVA中有一种数据结构,堆(优先队列) PiorityQueue 实现Queue接口, 添加到之中的数据默认采用升序排序,
可以理解为一个特殊的栈,但是每次再栈顶的都是最小的数据, 也可自己设置优先顺序
具体的类方法如下所示
默认构造时采用的时升序,如果要采用降序的顺序(即实现大顶堆),构造方法如下
PriorityQueue<?> queue = new PriorityQueue<>(
Collections.reverseOrder()
)
还有一种比较方便时髦的,似乎叫做lamba表达式:
降序顺序(大顶堆)PriorityQueue<?> queue = new PriorityQueue<>((x, y) -> (y - x));