12

Javaでは、新しいコンパレータを使用して新しいコンパレータを作成する方法がわかりませんがPriorityQueue、キューの長さが指定されていませんか? どうすれば作成できますか?

私は書くことができることを知っています:

Queue<Node> theQueue = new PriorityQueue<Node>(15,new Comparator<Node>();

しかし、キューが のように機能することを願っています。つまり、LinkedListその長さは固定されていません。どうすれば宣言できますか?

4

4 に答える 4

11

2021 年現在の最新の回答: https://stackoverflow.com/a/30015986/139010


後世のためのJava-8以前の回答:

そのようなコンストラクタはありません。JavaDocs によると、デフォルトの容量は 11PriorityQueueであるため、引数なしのコンストラクターと同様の動作を指定できます。

Queue<Node> theQueue = new PriorityQueue<Node>(11,new Comparator<Node>());

はい、必要に応じてキューが大きくなります。

プライオリティ キューは無制限ですが、キューに要素を格納するために使用される配列のサイズを制御する内部容量があります。これは常に、少なくともキュー サイズと同じ大きさです。要素が優先キューに追加されると、その容量は自動的に増加します。成長方針の詳細は明記されていない.x

于 2013-02-26T20:39:24.003 に答える
5

Java バージョン 8 以降、要求したことを実行できる新しいコンストラクターがあります: PriorityQueue(Comparator コンパレーター)

したがって、次のようになります。

Queue<Node> theQueue = new PriorityQueue<>(new Comparator<Node>());
于 2015-05-03T15:59:47.390 に答える
1

Comparator残念ながら、初期容量を指定せずに a だけを指定する方法はありません。これは初期容量にすぎないことに注意してください。キューはこの初期値から大きくなる可能性があります。

于 2013-02-26T20:40:55.410 に答える