欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA 堆的使用 (大顶堆,小顶堆)即优先队列 再TopK 和求中位数中用此种数据结构

程序员文章站 2024-02-12 22:46:04
...

  学习JAVA这么久了(从时间跨度上来看),一直磨磨蹭蹭的没有写博客,希望今天开始,不如正规吧

  JAVA中有一种数据结构,堆(优先队列)   PiorityQueue 实现Queue接口, 添加到之中的数据默认采用升序排序,

可以理解为一个特殊的栈,但是每次再栈顶的都是最小的数据, 也可自己设置优先顺序

具体的类方法如下所示

 

JAVA 堆的使用 (大顶堆,小顶堆)即优先队列 再TopK 和求中位数中用此种数据结构

默认构造时采用的时升序,如果要采用降序的顺序(即实现大顶堆),构造方法如下

PriorityQueue<?>  queue = new PriorityQueue<>(

Collections.reverseOrder()

)

还有一种比较方便时髦的,似乎叫做lamba表达式:

降序顺序(大顶堆)PriorityQueue<?> queue = new PriorityQueue<>((x, y) -> (y - x));