我应该为这个定价使用什么数据结构 table

What data structure should I use for this pricing table

我有一个包含 50,000 行的 JTable。 每行包含 3 列。 中间一列包含一个双精度数(价格),内容如下。

 col1  col2      col3
       1.0031
       1.0032
       1.0033
       1.0034
       1.0035

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

我目前正在遍历该数组,并根据 50,000 行检查它以找到它应该属于的行,然后将其插入。

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

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

一定有更好的方法来做到这一点... 我真的希望能够根据价格在特定行插入价格。 (因此每个 p rice 都映射到一个索引) 如果价格 = 1.0035 插入行 X

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

任何想法作为实现这一目标的最佳方式? 哈希表??用于本地化搜索的四叉树?任何更快的东西,因为我这样做的方式对于应用程序的需要来说太慢了。

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

至于一棵树,您将不得不进行一些实验(或计算)来确定每个节点中的值的数量以满足您的需要。

听起来您可以让您的 TableModel 管理一个 SortedMap,例如 TreeMap<Double, …>, which "provides guaranteed log(n) time cost for the containsKey, get, put and remove operations." This related example 管理一个 Map<String, String>