2015-07-22 69 views
1

我有一個有5萬行的JTable。 每行包含3列。 中間一列包含雙(價格),並且是這樣讀的。我應該爲這個定價表使用什麼數據結構

col1 col2  col3 
     1.0031 
     1.0032 
     1.0033 
     1.0034 
     1.0035 

我那麼有大約10-20的價格是被每20ms更新不斷更新陣列。

即時通訊目前遍歷數組,並檢查它反對50,000行找到它應該屬於該行,並將其插入。

然後在下次更新時,林清除這些欄,並重復。

這是極其昂貴的,雖然,因爲每次更新,我必須遍歷20的價格,是那麼每個迭代50000次找到他們應該屬於該行的價值。

Theres得到一個更好的方式來做到這一點... 我真的希望能夠根據價格插入價格在某一行。 (所以每個p大米映射到索引) 如果價格= 1.0035插入行X

相反,我必須做一些事情,如 如果價格是在50,000個值之一,找到值索引並插入。

任何想法,以實現這一目標的最佳途徑? 散列表?四叉樹用於本地搜索?任何事情都會更快,因爲我的做法遠遠不夠緩慢,因爲應用程序需要。

+0

「找到它應該屬於的行,並插入它」,應該屬於什麼,什麼是插入的地方? – mangusta

+0

「我真的希望能夠根據價格在某一行插入價格」 - (O,o) – mangusta

回答

2

這聽起來像你可以讓你的TableModel管理SortedMap,如TreeMap<Double, …>,其中「提供了有保證log(n)時間成本,爲containsKeygetputremove操作。」此相關example管理Map<String, String>

+0

謝謝,我認爲這正是我需要的 – KyleK

0

樹似乎是最合理的數據結構給我,但是如果你的價值觀是在已知的範圍內,你可以有對應於每個可能的價格,用一個標誌表示如果價格存在的指標。您的搜索將會是,並且每個條目的更新將爲O(1),缺點是內存佔用增加。本質上這是一個散列表,儘管你的散列函數可能非常簡單。

對於一棵樹,你就必須做一些實驗(或計算),以確定您的需求每個節點的值的數量。

相關問題