在大值中使用哪种数据结构?

时间:2013-12-03 10:12:06

标签: java text data-structures mapreduce bitset

我在mapreduce中编写程序。我需要为每个密钥保存一个很大的值。详细说明每个id(key),我想保存一个由大数字组成的值。我使用了1到100000000之间的数字。例如:

id       value
1        1,3,9,23,56,345,.......,10000000000
2        6,8,45,321,876,.........,98760000876
.
.
.
100000000   1,2,6.83,90,126,567,.......,7632786765643

在每次迭代中,每个值中的数字量都会增加。首先,我选择文本类型作为值,但在结果中我看到随机大小变得非常大,我无法得到答案。然后我选择BitSet类型,但BitSet的过程非常慢。我不知道哪个数据结构,我可以使用它可以提供我的大小和处理速度。任何人都可以帮忙吗? 感谢。

2 个答案:

答案 0 :(得分:1)

我认为您可以为每个密钥关联List。因此,您可以使用Map将ID与数字列表相关联:Map<Integer, List<Long>>

答案 1 :(得分:0)

在Java中,int数据类型是一个32位有符号整数。它的范围是-2,147,483,648到2,147,483,647,这在你的情况下是不够的。如果您有64位计算机,则可以使用“int”类型。

否则,您可以使用BigInteger

对我来说,适当的数据结构是:

Map<Integer, List<BigInteger>>