簡體   English   中英

Java排序數據結構

[英]Java Sorting Data Structure

我正在從文本文件中獲取一個具有多個數據字段(3個字符串字段,兩個int字段)的對象,計算出某個數值,然后我需要將它們一個一一地放在數據結構中他們從文件中。 在解析/計算/存儲結束時,我需要根據該計算值對結構進行排序,以便可以連續檢索/彈出最高值的結構。

我在考慮PriorityQueue,但是對此有更好的結構嗎?

編輯:什么會更快? 是否有一個結構可以在程序流的整個過程中進行排序,還是僅將它們放在列表中並在末尾排序?

正如您所建議的,我將使用PriorityQueue。 它使用堆作為數據結構,該結構使元素隨您排序。 完成后,您實際上便有了一個有序列表,因此您可以有效地按順序讀取元素。

如果您希望自然排序,則可以選擇TreeSet 其中元素使用其自然順序進行排序 ,或者由集合創建時提供的Comparator進行 排序

如果您具有計算的數值並將其存儲為元素對象內部的變量,則PriorityQueue更合適。 在這種情況下,您可能需要指定適當的Comparator進行同步訪問,請訪問PriorityBlockingQueue

如果我理解正確,您可以讀取並計算該值,然后將其放入“隊列”中,然后才需要對隊列進行排序? 因為如果僅對隊列排序一次(從文件中讀取所有數據之后),那么您可能想要使用實現Queue的LinkedList

  • (i)讀取數據並創建對象(它們應實現CompareTo
  • (ii)使用linkedList.add(myObject)將所有對象放在LinkedList
  • (iii)對鏈接列表Collections.sort(linkedList)排序
  • (iv)窺視或彈出第一個元素

如果每個對象都是一個對象,您不僅可以創建一個compateTo方法來比較兩個對象以確定哪個對象應該優先使用,然后使用該方法對您的對象進行排序(可能存儲在數組或列表中?)。

我認為您也許應該調查一下: 比較

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM