2017-05-06 8 views
0

に追加します。優先度つきキューこのため<Integer>

[2] 
[2, 4] 
[1, 4, 2] 

なぜ三行目ではない[2,4,1]の出力は次のとおりです。

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

toStringの実装ではPriorityQueueが順番にそれらを返すとは書かれていません。実際に問題があることである:

  • PriorityQueuetoString()実装を提供していませんので、AbstractCollection::toString()が使用されています。
  • ドキュメント(そうnext()hasNext()を呼び出すことによって)についてPriorityQueue::iterator状態をiterator()方法を用いることにより
  • AbstractCollection::toString()プリントアイテム:このキューの要素の反復子を返します。イテレータは特定の順序で要素を返しません。

そこで、基本的toStringは、順序付けられた要素のビューを提供しないiterator()に依存しています。

関連する問題