[英]Java Sorting Data Structure
我正在從文本文件中獲取一個具有多個數據字段(3個字符串字段,兩個int字段)的對象,計算出某個數值,然后我需要將它們一個一一地放在數據結構中他們從文件中。 在解析/計算/存儲結束時,我需要根據該計算值對結構進行排序,以便可以連續檢索/彈出最高值的結構。
我在考慮PriorityQueue,但是對此有更好的結構嗎?
編輯:什么會更快? 是否有一個結構可以在程序流的整個過程中進行排序,還是僅將它們放在列表中並在末尾排序?
正如您所建議的,我將使用PriorityQueue。 它使用堆作為數據結構,該結構使元素隨您排序。 完成后,您實際上便有了一個有序列表,因此您可以有效地按順序讀取元素。
如果您希望自然排序,則可以選擇TreeSet
。 其中元素使用其自然順序進行排序 ,或者由集合創建時提供的Comparator進行 排序 。
如果您具有計算的數值並將其存儲為元素對象內部的變量,則PriorityQueue更合適。 在這種情況下,您可能需要指定適當的Comparator進行同步訪問,請訪問PriorityBlockingQueue
如果我理解正確,您可以讀取並計算該值,然后將其放入“隊列”中,然后才需要對隊列進行排序? 因為如果僅對隊列排序一次(從文件中讀取所有數據之后),那么您可能想要使用實現Queue的LinkedList
。
CompareTo
) linkedList.add(myObject)
將所有對象放在LinkedList
Collections.sort(linkedList)
排序 如果每個對象都是一個對象,您不僅可以創建一個compateTo方法來比較兩個對象以確定哪個對象應該優先使用,然后使用該方法對您的對象進行排序(可能存儲在數組或列表中?)。
我認為您也許應該調查一下: 比較
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.