我应该为此定价表使用什么数据结构

时间:2015-07-22 04:59:17

标签: java swing search jtable

我有一个拥有50,​​000行的JTable。 每行包含3列。 中间列包含一个double(price),并且读起来像这样。

 col1  col2      col3
       1.0031
       1.0032
       1.0033
       1.0034
       1.0035

然后,我有一个不断更新的大约10-20个价格的数组,每20毫秒更新一次。

我正在迭代该数组,并针对50,000行检查它以找到它应该属于的行,然后插入它。

然后在下次更新时,我清除这些列,然后重复。

这是非常昂贵的,因为每次更新时,我必须迭代超过20个价格,然后每次迭代50,000次以找到它们应该属于的行的值。

Theres必须是一个更好的方法来做到这一点...... 我真的希望能够根据价格在某一行插入价格。 (所以每个p米都映射到一个索引) 如果price = 1.0035插入第X行

相反,我必须做类似的事情 如果price是50,000个值之一,请找到值索引并插入。

任何想法都是实现这一目标的最佳途径? 哈希表??四叉树进行本地化搜索?更快的是,因为我这样做的方式对于应用程序的需求而言要慢得多。

2 个答案:

答案 0 :(得分:2)

听起来您可以让TableModel管理SortedMap,例如TreeMap<Double, …>,其中&#34;为{{1}提供有保证的log(n)时间费用}},containsKeygetput操作。&#34;与此相关的example管理remove

答案 1 :(得分:0)

对我来说,树似乎是最合乎逻辑的数据结构,但是如果您的值在已知范围内,则可以有一个与每个可能价格相对应的索引,并带有一个标记,以显示价格是否存在。那么您的搜索将是每个条目的更新将是O(1),缺点是增加了内存占用。本质上这是一个哈希表,尽管你的哈希函数可能非常简单。

对于树,您必须进行一些实验(或计算)以确定每个节点中的值的数量以满足您的需求。