0

2 つの Node オブジェクトを比較して 1、-1、または 0 を返すコンパレータ クラス NComparator があります。

初期容量 100 の PriorityQueue とその NComparator を初期化しました。

    NComparator nc = new NComparator();
    PriorityQueue<Node> pq = new PriorityQueue<Node>(100, nc);

約 25 の Node オブジェクト (NComparator と比較できます) があり、それらすべてを PriorityQueue オブジェクトに追加しました。

  pq.add(new Node("A", 3));
  pq.add(new Node("G", 1));
  pq.add(new Node("B", 10));
  .... etc

これらのノード オブジェクトを PriorityQueue で、コンパレータ (ノードのペアごとの組み合わせのみを比較する) によって返される優先順位で配置するにはどうすればよいですか? 具体的には、この PriorityQueue で最も優先度の低い 2 つのノードにアクセスできるようにしたいと考えています。どうやってやるの?

4

2 に答える 2

2

API は、優先度が最も低い単一ノードのPriorityQueue取得のみをサポートしていますが、それを削除してから再度クエリを実行して、次に低い要素を取得することができます。

于 2013-07-09T21:42:23.833 に答える
0

NComparator が Node 要素を正しく配置し、最小の優先度がキューの先頭にあると確信している場合は、2 回行うだけで済みます: pq.poll() PriorityQueue API を参照してください。

例:

  Node firstLowerNode = pq.poll();
  Node secondLowerNode = pq.poll();
于 2013-07-09T22:10:13.300 に答える