【问题标题】:Most efficient data data structure for array with 2 different types具有 2 种不同类型的数组的最有效数据数据结构
【发布时间】:2016-10-11 20:59:45
【问题描述】:

在 Java 中使用具有 3 列两种数据类型的多维数组 - Column1 可以是任何原始数据类型,Column2 和 Column3 是相同大小的整数。我们有数千个具有许多查找和比较操作的数组,因此我们想看看是否有更快/更小的替代对象类型的数组。我们需要维护排序顺序并希望避免散列。所有操作都使用所有 3 列。

总结需求:
1. 最大化迭代数据结构的速度
2.最小化数据结构的大小
3.维护数组内容的排序顺序
4.避免散列(没有LinkedHashMap)

到目前为止我们已经考虑过的结构:
1. 对象数组(当前实现)
2. 制作 2 个数组(每种数据类型一个),并在操作期间通过数组索引查找加入它们

有人对数据结构有任何其他(更好的)建议吗?谢谢:)

【问题讨论】:

  • @ɐuıɥɔɐɯ 感谢您的建议。但是,我们需要维护排序顺序(数组以这种方式相互连接),因此普通散列不是一种选择。我们尝试了 LinkedHashMap,但这比对象数组慢得多。想要其他替代品
  • 为什么java在这里如此重要?我会使用成熟的关系数据库,比如 postgres。
  • @TamasRev 我们实际上是在为关系数据库创建后端存储,这是用于 DBMS 研究
  • @WillGetItDunn 哦,我明白了。那我和这个问题不在同一个联盟:)
  • @TamasRev 这是一个很好的建议!

标签: java arrays multidimensional-array data-structures


【解决方案1】:

这就是我天真地实现 RDBMS 的方式

  • 使用字节数组数组:byte[][] 和知道如何实现字节数组的外部类。
  • 字节数组中可以有标记,例如为第一项定义类型。 IE。 8 种基本类型(byteshortintlongfloatdoublebooleanchar)的标记可以轻松放入 1 个字节中。
  • 您可以使用 B 树(也称为索引)加快查找速度
  • 如果项目的顺序可以是虚拟的,那么另一个索引也可以做到这一点

相信你们已经知道了。但我很好奇那里有什么新东西。

【讨论】:

    猜你喜欢
    • 2020-12-17
    • 1970-01-01
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    相关资源
    最近更新 更多