2012-02-02 10 views
2

JavaのPriorityQueueのコンストラクタには、sizeパラメータが必要です。それを事前に決定する方法は?何らかの削除の後にキューを拡大するかサイズを変更する必要がある場合はどうすればよいですか?JavaのPriorityQueueをサイズ変更/拡大する方法

ありがとうございます。

答えて

3

PriorityQueueには制限がありません。あなたのメモリが許す限り大きくなり、必要に応じて自動的に拡張されます。 initialCapacityパラメータは、最初にその多くの要素のためのスペースを予約するヒントに過ぎません。

続きを読むdocs

5

サイズパラメータを指定する必要はありません。デフォルトのコンストラクタはデフォルトの初期容量11を返します。この容量は必要なときに2 xインクリメントされるため、実際には心配する必要はありませんそのことについて。

サイズを事前に指定する唯一の目的は、時間を節約することです(あまり目立つわけではありません)。

+1

私は 'Comparator'オブジェクトを提供する必要があるとき、私はサイズのためのparaterも提供する必要がありますか? –

+2

@littleEinsteinはい、その場合、コンストラクタが必要とするので、必要な容量を最大限に賭けて、それほど問題にはなりません。 –

2

コレクションは、建設後に管理されます。このコンストラクタで何をするかは、javaにヒント(配列に十分なメモリを割り当てる)を与えることです。

私はあなたがについて話している

3

サイズはinitialCapacityある(興味を持っている場合や、JDKでチェックすることができる必要があります)Javaの優先度キューは、アレイベースのヒープに基づいていると思います。キューを大きくする必要はありません。キューが必要なときに自動的に拡大します。

+0

私のキューがもはや変更されていない場合にいくつかの領域を節約できるように、それを削除したいのですが? –

+0

@littleEinstein次に、新しいPriorityQueueを作成し、古いものを破棄しなければなりません。 'theQueue = new PriorityQueue(theQueue); – nos

関連する問題