编程语言
首页 > 编程语言> > java的PriorityQueue的内置迭代器不以任何特定顺序遍历数据结构.为什么?

java的PriorityQueue的内置迭代器不以任何特定顺序遍历数据结构.为什么?

作者:互联网

这是直接来自Java Docs

This class and its iterator implement all of the optional methods of the Collection and Iterator interfaces. The Iterator provided in method iterator() is not guaranteed to traverse the elements of the priority queue in any particular order. If you need ordered traversal, consider using Arrays.sort(pq.toArray()).

基本上,我的PriorityQueue工作正常,但是使用自己内置的toString()方法将其打印到屏幕上会让我看到这个异常现象,并且想知道是否有人可以解释为什么它是迭代器提供的(并且使用过的)内部)不按自然顺序遍历PriorityQueue?

解决方法:

因为底层数据结构不支持它.二进制堆只是部分排序,最小元素位于根.删除它时,将重新排序堆,以便下一个最小元素位于根.没有有效的有序遍历算法,因此Java中没有提供任何算法.

标签:java,priority-queue
来源: https://codeday.me/bug/20190911/1804320.html