在使用优先队列PriorityQueue时,默认的是升序排列,自己可以指定比较器改为降序排列,例如Collections.reverseOrder()
等。
但是在我做力扣的过程中,简单的用一个list的addAll方法添加了优先队列里边所有元素,结果发现添加后的元素顺序并不是按照比较器的指定顺序,就进入断点调试看了一下,发现如果不调用poll()或者peek()方法,其实元素的顺序是乱序的。。。
我们分别用for循环和poll()方法输出看看:
for循环输出结果:
poll()方法输出结果:
在每次调用poll()或者peek()方法之后,优先队列其实都会重新排序。
所以简单的addAll不一定会保证元素顺序,还是poll()之后一个一个添加吧。