首頁 > Java > java教程 > 主體

儘管比較器正確,但為什麼我的 PriorityQueue 的 toString 輸出混亂?

Patricia Arquette
發布: 2024-10-30 14:11:26
原創
308 人瀏覽過

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 循環逐個輪詢項目:

<code class="java">while (!queue.isEmpty()) {
  System.out.println(queue.poll());
}</code>
登入後複製

這種方法確保堆結構在每次調用poll 期間都是固定的,從而得到所需的元素順序輸出。

以上是儘管比較器正確,但為什麼我的 PriorityQueue 的 toString 輸出混亂?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!