我有一個類存儲日期作爲關鍵和價格作爲價值。我的數據結構存儲大約5M條目。當我想要檢索某個日期範圍內的數據時,我將遍歷數據結構並檢查當前數據是否在日期範圍內。更好的數據結構檢索日期之間的數據
例如
if (startDate >= data.date && data.date <= endDate)
//do something
但是,這是非常低效的。有一個更好的方法嗎?
我有一個類存儲日期作爲關鍵和價格作爲價值。我的數據結構存儲大約5M條目。當我想要檢索某個日期範圍內的數據時,我將遍歷數據結構並檢查當前數據是否在日期範圍內。更好的數據結構檢索日期之間的數據
例如
if (startDate >= data.date && data.date <= endDate)
//do something
但是,這是非常低效的。有一個更好的方法嗎?
如果內存/性能是不是約束*,你可以簡單地用一個TreeMap
,其中有一個subMap method,讓您的時間窗口上進行過濾:
TreeMap<Date, Double> data = ...;
for (Double price : data.subMap(startDate, true, endDate, true).values()) {
//do something with price
}
*即。如果您不需要將價格保持爲原始的雙倍數,例如
編輯:是的,使用TreeMap
自動化工作得很好。不知道你是否被允許改變你的數據結構。
謝謝。這正是我正在尋找的。 – jerr