【问题标题】:Java Collection Lib or a Custom Class?Java Collection Lib 还是自定义类?
【发布时间】:2011-12-24 19:16:04
【问题描述】:

我正在开发一个映射实用程序,该实用程序需要以 CSV 格式将适量数据输入到应用程序中。这些 CSV 文件可能包含 100000 多条记录,每条记录包含大约 50 个项目。我可能需要一次打开其中几个文件。数据需要双精度,但不是记录中的每个项目。这些项目可以强制转换为 int 或调用 toString。

我的问题是:我的第一个想法是创建一个 double[] 的 ArrayList。我的第二个想法是创建一个自定义数据对象(MyDataClass 的 ArrayList),以我需要的形式保存这些数据。这将使我创建一个包含大约 45-50 个实例变量的类。我从来没有做过这种规模的任何事情,并且可以使用一些关于最佳实践的指导来完成这样的任务!

【问题讨论】:

  • “被输入到应用程序中”是什么意思?导入数据库?那么您不必将所有内容都保存在内存中。
  • 将 CSV 文件读入数据结构(内存)。数据库目前还不是一个真正的选择。

标签: java data-structures collections arraylist


【解决方案1】:

这两种方法都很好。这完全取决于您将如何处理数据。如果它只是数据并且除了 getter 之外没有任何方法,那么创建一个类来保存它们可能是矫枉过正。如果您想为一行添加一些行为,请创建一个类。一个独特的类中的 50 个字段有点太多了。您可以将类分成逻辑组,但这完全取决于数据代表的内容。

如果我们假设您打开了 10 个文件,每个文件都有 100000 * 50 个双精度数,则大约需要 380 MB。您必须为每个双精度数组和 ArrayLists 添加内存。这样的内存量可能太多,也可能没问题。这一切都取决于您在 JVM 中拥有的内存。如果您无法将所有内容都保存在内存中,请考虑根据需要读取文件,或将数据存储在数据库中。

【讨论】:

  • 好交易。是的,我希望建模一些行为(聚合、编译等)。我真的很喜欢你把它分解成逻辑部分的想法。一个部分用于映射轨道,另一个用于映射信号质量,另一个用于一般信息,所以这是一个很好的建议!
猜你喜欢
  • 2013-08-24
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
相关资源
最近更新 更多