コンパレータが正しいにもかかわらず、PriorityQueue の toString 出力が乱れているのはなぜですか?

Patricia Arquette
リリース: 2024-10-30 14:11:26
オリジナル
309 人が閲覧しました

Why is My PriorityQueue's toString Output Disordered Despite a Correct Comparator?

toString 出力における PriorityQueue の順序の不一致

この問題は、コンパレーターが要素を並べ替えない場合の PriorityQueue の toString メソッドの誤った使用に起因します。

コンパレータ エラー

指定されたコンパレータ HuffmanComparator では、コードを次のように変更して、周波数の低いノードを優先する必要があります:

<code class="java">public int compare(TreeNodeHuffman p1, TreeNodeHuffman p2) {
  if (p1.frequency > p2.frequency) return -1;
  if (p1.frequency < p2.frequency) return 1;
  return 0;
}</code>
ログイン後にコピー

toString とポーリング

コンパレータは正しくなりましたが、PriorityQueue の toString メソッドは要素が完全に並べ替えられることを保証しません。ソートされた要素を取得するには、while ループを使用して項目を 1 つずつポーリングする必要があります。

<code class="java">while (!queue.isEmpty()) {
  System.out.println(queue.poll());
}</code>
ログイン後にコピー

このアプローチにより、ポーリングの各呼び出し中にヒープ構造が確実に固定され、結果として要素が望ましい順序になります。出力。

以上がコンパレータが正しいにもかかわらず、PriorityQueue の toString 出力が乱れているのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!