0
我有一個類是多一對(double, int)
。我需要保留這些對象的兩個集合,這兩個對象都按double
排序,一個按升序排列,另一個按降序排列。是否適合這種情況的PriorityQueue?
實施例:
asc: [(4.0, 10), (4.5, 8), (5.2, 13), (6.0, 1)]
des: [(32.0, 20), (27.5, 2), (13.65, 4), (6.0, 100)]
主要使用模式將是:
- 客戶端有一對
(d, i)
進入; - 檢查集合中的一個(取決於客戶端)的頭一對下(分別更高。),相對於
d
,比給定對; - 如果存在,則根據
i
的值將其刪除或執行一些計算; - 如果它不存在或未刪除,請將給定對插入其他集合的適當位置。
因此,主要的操作是:
- 爲了插入;
- 檢索頭;
- 移除頭部。
實施例:
- 客戶端採用
(4.2, 12)
進入並想看asc
; asc
與4.0
有一對,它低於4.2
;- 刪除
asc
的頭,看看新的頭; - 由於
4.2
低於6.0
,新的頭高於4.2
,因此客戶端將該對插入des
的尾部。
由於沒有客戶端要遍歷集合,而是處理當前的頭,因爲插入必須在秩序和相當快,我會說一個PriorityQueue
是這項工作的工具。
我說得對嗎,還是有更好的Java數據結構(沒有外部庫),我不知道?
例如,對於此任務,ArrayList
聽起來很糟糕,因爲插入將發生在隨機索引處,而不是在尾部插入。
確實如此。在我寫這個問題時,用例變得更加清晰了,最後我只是想知道是否還有其他合適的選擇。但我想我的問題的描述清楚地表明瞭一個'PriorityQueue'。 – afsantos