我有一个拥有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个值之一,请找到值索引并插入。
任何想法都是实现这一目标的最佳途径? 哈希表??四叉树进行本地化搜索?更快的是,因为我这样做的方式对于应用程序的需求而言要慢得多。
答案 0 :(得分:2)
听起来您可以让TableModel
管理SortedMap
,例如TreeMap<Double, …>
,其中&#34;为{{1}提供有保证的log(n)
时间费用}},containsKey
,get
和put
操作。&#34;与此相关的example管理remove
。
答案 1 :(得分:0)
对我来说,树似乎是最合乎逻辑的数据结构,但是如果您的值在已知范围内,则可以有一个与每个可能价格相对应的索引,并带有一个标记,以显示价格是否存在。那么您的搜索将是每个条目的更新将是O(1),缺点是增加了内存占用。本质上这是一个哈希表,尽管你的哈希函数可能非常简单。
对于树,您必须进行一些实验(或计算)以确定每个节点中的值的数量以满足您的需求。