【问题标题】:What data structure should I use for this pricing table我应该为这个定价表使用什么数据结构
【发布时间】:2015-07-22 04:59:16
【问题描述】:

我有一个有 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 次以找到它们应该属于的行的值。

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

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

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

【问题讨论】:

  • "找到它应该属于的行,并插入它",应该属于什么,什么插入到哪里?
  • "我真的希望能够根据价格在某一行插入价格" - (O,o)

标签: java swing search jtable


【解决方案1】:

听起来您可以让您的TableModel 管理SortedMap,例如TreeMap<Double, …>,它“为containsKeygetput 和@987654330 提供有保证的log(n) 时间成本@ 操作。”这个相关的example 管理着一个Map<String, String>

【讨论】:

  • 谢谢,我想这正是我需要的
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2016-10-31
    相关资源
    最近更新 更多