首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中有效地存储海量数值数据?请批评我的解决方案

如何在Java中有效地存储海量数值数据?请批评我的解决方案
EN

Stack Overflow用户
提问于 2011-01-28 13:51:48
回答 3查看 171关注 0票数 0

我是一名软件实习生,正在设计一个程序,该程序可以解析工业模拟器输出的数据文件,以便对其进行计算。

文件的基本结构如下:

Property1

时间步长1 0.000 3.141 5.131等...

时间步长2 3.323 0.000等...

等等。

需要以某种数据结构收集数据,以便进行有效的计算。可能有几百万个数据点,尽管其中许多是相同的值。

我的解决方案(嵌套HashMaps):

主对象DataContainer有一个HashMap,其中包含属性名作为键。这些关键点与它们自己的包含时间步数作为关键点的HashMaps相关联。这些键与它们自己的HashMaps相关联,其中包含数据值作为键,这些键与该值在timestep内出现的次数成对。

快速说明:

DataContainer属性:

代码语言:javascript
复制
  property 1 : 
               time 1 - 0.000, 4 | 3.313, 10 etc...
               time 2

期待着人们的意见。

EN

回答 3

Stack Overflow用户

发布于 2011-01-28 14:46:40

如果您对效率感兴趣,最好为属性创建带有属性/ getters /setter的自定义类。

包含HashMaps等的HashMaps:

  • 占用更多空间,
  • 更慢,
  • 使用起来更棘手……尤其是当您希望以可预测的顺序迭代元素时,
  • 会抵消Java语言固有的编译时类型安全性的好处。
票数 0
EN

Stack Overflow用户

发布于 2011-01-28 14:59:51

我的想法是:

代码语言:javascript
复制
class DataContainer{
   TreeMap timestamp<String, SortedList<Integer>>;

}
票数 0
EN

Stack Overflow用户

发布于 2011-01-28 15:04:28

我会选择两个长度相同的数组,比如double[] value; int[] count;。这肯定比用盒装的值填充的Map.Entry占用的空间要少得多。我会在它们周围创建一个简单的类,并将其放入您的Map中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4825280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档