【问题标题】:Best Java data structure to store a 3 column oracle table? 3 column array? or double map?存储 3 列 oracle 表的最佳 Java 数据结构? 3列数组?还是双地图?
【发布时间】:2009-10-23 09:52:43
【问题描述】:

存储大约 140 行乘 3 列的 oracle 表的最佳数据结构是什么。我在考虑一个多维数组。

最好我并不一定意味着最高效(但我很想知道您的意见),因为该程序将作为一项有足够时间运行的作业运行,但我确实有一些限制:

最初可能多个键为“null”。所以第一列可能有多个空值。我还需要能够访问其他列中的元素。有什么比线性搜索更能访问数据的吗?

再一次,像 [][][] 这样的东西会起作用.. 但是有没有像 3 列地图这样的东西,我可以通过键或第二列访问?我知道地图只有两个值。

所有数据都可能是字符串或转换为字符串。

谢谢

【问题讨论】:

    标签: java database oracle data-structures hashtable


    【解决方案1】:

    具有 3 个字段的自定义类,以及该类的 java.util.List

    在这种情况下,将数据硬塞到数组中没有任何好处,性能没有提高,代码可维护性当然也没有提高。

    【讨论】:

      【解决方案2】:

      这是人们用面向对象语言编写 FORTRAN 的另一个例子。

      Java 是关于对象的。如果您开始使用对象来抽象您的问题,隐藏客户的细节并减少耦合,您会好得多。

      这三个项目代表什么有意义的对象,具有有意义的行为?我先从这个开始,然后再担心数据结构和持久性。

      所有数据都可能是字符串或转换为字符串。

      如果它们真的是字符串,这很好,但我鼓励你深入研究,看看你是否可以做得更好。

      例如,如果您编写一个使用信用评分的应用程序,您可能很想将其作为数字列保存在数据库中。但是您可以从更深入地研究问题并将该值封装到 CreditScore 对象中受益。当你拥有它时,你意识到你可以添加一些东西,比如单位(“FICO”与“TransUnion”)、比例(范围从 0 到 850),也许还有一些丰富的行为(例如,管理何时重新排序分数的规则)。您将所有内容封装到一个对象中,而不是将用于操作信用评分的逻辑分散在整个代码库中。

      开始少考虑表格和列,多考虑对象。或者切换语言。 Python 内置了元组的概念。也许这对你更有效。

      【讨论】:

        【解决方案3】:

        如果您需要通过键和另一个键访问您的数据,那么我将只使用 2 个映射并定义一个单独的类来保存您的记录。

        class Record {
           String field1;
           String field2;
           String field3;
        }
        

           Map<String, Record> firstKeyMap = new HashMap<String, Record>();
           Map<String, Record> secondKeyMap = new HashMap<String, Record>();
        

        【讨论】:

        • 不是一个好主意,因为他说 field1 可以为空。
        • 如果 key 为空,那么通过该 key 进行搜索没有太大用处。
        • 另外,他可能支持 2 组对象,它们的第一个键为空,第二个键为空。
        • 我最终使用了类似这样的东西..第一个映射的列没有空值作为键,另一列可以在第二个参数中包含空值(作为对象)地图。 ..第二张地图正好相反。
        【解决方案4】:

        我会创建一个映射您的记录的对象,然后创建该对象的集合。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-05-25
          • 2019-11-21
          • 2010-10-06
          • 2011-09-26
          • 1970-01-01
          • 1970-01-01
          • 2015-11-24
          相关资源
          最近更新 更多