java中保存Bigdata整数记录的最佳数据结构是什么?

java中保存Bigdata整数记录的最佳数据结构是什么?,java,data-structures,bigdata,Java,Data Structures,Bigdata,我正在处理大量的图形,我需要将它们的记录保存在内存中。我有一个由整数组成的aboat100000000记录。记录如下: record1: 13455659009,2459904444, 888999, 45590008 record2: 7787687970097,98776,898767746,6556 ........ record1000000000: 8736406,.....,987586985,764765282 首先,我使用位集保存它们,例如,对于record1,我这样做: B

我正在处理大量的图形,我需要将它们的记录保存在内存中。我有一个由整数组成的aboat
100000000
记录。记录如下:

record1: 13455659009,2459904444, 888999, 45590008
record2: 7787687970097,98776,898767746,6556
........
record1000000000:  8736406,.....,987586985,764765282
首先,我使用位集保存它们,例如,对于record1,我这样做:

BitSet bs=new BitSet();
bs.set(134659009);
bs.set(245990444);
bs.set(888999);
bs.set(45590008);
但是位集是无效的。因为我只有四个数字,但它节省了245990444。 我想将这些记录保存在ram中,因此占用更少的空间很重要。在ram中保存这些整数记录的最佳结构是什么? hashset比bitset好吗
谢谢。?

最有效的结构可能是原始整数数组,即
int[]
。根据您使用它的方式,使用实现
java.lang.Set
的类包装它可能(也可能没有)有帮助


另一方面,为什么需要图形节点ID的整数列表?为什么不只是一个
节点
类,以及一个
集合
图形边的成员?

我需要为每个节点存储邻接列表。我有一个哈希表,键是节点id,值是它的邻接列表的记录。如果你有十亿个顶点,每个顶点有四条或五条边,存储它们的最有效的方法可能是作为原始
int[]
数组(在你的哈希值中)。即使是这样,所有这些阵列的容量也将增加30 GB左右。使用数组而不是哈希表(即
int[][]
而不是
HashMap
)还可以节省一些内存(假设大多数顶点都有边)。