PriorityQueue是JAVA中的定义的堆,默认是小根堆,可以通过传入自定义的Comparator函数来实现大根堆。
使用方法如下:
1、add()、offer()
add(E e)和offer(E e)的语义相同,都是向优先队列中插入元素,只是Queue接口规定二者对插入失败时的处理不同,前者在插入失败时抛出异常,后则则会返回false。
2、element()、peek()
element()和peek()的语义完全相同,都是获取但不删除队首元素,也就是队列中权值最小的那个元素,二者唯一的区别是当方法失败时前者抛出异常,后者返回null。根据小顶堆的性质,堆顶那个元素就是全局最小的那个;由于堆用数组表示,根据下标关系,0下标处的那个元素即是堆顶元素。
3、remove()、poll()
remove()和poll()方法的语义也完全相同,都是获取并删除队首元素,区别是当方法失败时前者抛出异常,后者返回null。
本文详细介绍了Java中的PriorityQueue类,包括其默认的小根堆结构及如何通过自定义Comparator实现大根堆。同时,还深入探讨了PriorityQueue的主要操作方法,如add()、offer()、element()、peek()、remove()和poll()等,并解释了这些方法在插入和检索元素时的不同行为。
399

被折叠的 条评论
为什么被折叠?



