这是我的第一篇文章,我保证我会在这个问题上搜索一下。在任何想象中我都不是Java,所以我可能只是不明白我想要实现的目标。
我来自旧的IBM / AS400 + ABAP以及偶尔的Delphi编程背景。
我需要实现的是内部存储大约1,000,000到10,000,000行,大约50列。我需要对这些值执行一大堆数学方程式,因此访问数据库不是一种选择。
50列中的大多数将是整数或指示符值,但主键将是日期值(并非Java似乎可以做日期:))。
因此,从我早期的编程日来看,术语“数组”(IBM)和内部表(SAP ABAP)就是我习惯的。
但是对于通过Eclipse的Java,我看到了很多我真的不熟悉的东西。 ArrayList,Treemaps,Objects,我玩过其中的一些,但我可能不会做得对。
因此,大师,在这种情况下使用的最佳机制是什么。考虑到它需要表现良好的音量。
非常感谢提前
Panduranga
答案 0 :(得分:0)
我认为您应该重新考虑使用某种数据库,除非您的目标系统提供大量RAM并选择不同的主键(或者在1970-01-01之后使用millis中的日期)。
对于您给出的示例,我将为每列使用64位内存:
64位* 50 * 10,000,000 = 32000000000位 ~3,72 GiB
然后从一个简单的类开始,以保存这50列:
public class MyEntity {
public long index;
public long value;
...
}
要存储它们,您可以使用Map(仅在必要时使用Date作为索引):
Map<Date, MyEntity> mapEntities = new HashMap<Date, MyEntity>();
如果您决定将所有对象存储在RAM中,则必须调整Java-VM的内存(对于您的情况,大约为4g):
java -Xmx4g
答案 1 :(得分:0)
鉴于第一个问题的答案,您可以决定哪种数据结构最适合您。一些例子:
等