添加到PriorityQueue的
问题描述:
对于这一点:添加到PriorityQueue的<Integer>
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.add(2);
System.out.println(pq);
pq.add(4);
System.out.println(pq);
pq.add(1);
System.out.println(pq);
我得到这样的输出:
[2]
[2, 4]
[1, 4, 2]
为什么输出的第三行不[2,4,1]
?
答
无论如何写出PriorityQueue
的toString
实现都会按顺序返回它们。其实,问题是:
-
PriorityQueue
不提供toString()
实现,所以AbstractCollection::toString()
使用。 -
AbstractCollection::toString()
打印项通过使用iterator()
方法(以便通过调用next()
和hasNext()
) - 文档约
PriorityQueue::iterator
状态:返回在此队列中的元素的迭代器。迭代器不会以任何特定顺序返回元素。
所以基本上toString
依靠iterator()
其不提供所述元素的有序图。