0

在我的程序中,我随机生成一些标识符来识别某些字符。例子:

12555678 to identify 'a'
12 to identify 'g'
13456789900000076 to identify 'c'
...

在我的算法中,我不知道这些标识的大小。所以,我使用BigInteger数字。我想减少内存,然后当我生成一个标识符时 12,如果我可以使用另一种类型(不是 BigInteger),我可以在内存中获胜。所以我的问题是,是否可以使用另一种类型来操作内存并只租用我的 Identifiers 的确切大小?

谢谢

4

2 回答 2

5

BigInteger与表示数字所需的一样大(加上一些开销)

如果你可以使用Long它,它会更小(因为它的开销更少)使用小于 Long 的类型不会有太大的区别,因为开销是相同的。

如果您可以使用 64 位有符号值,则使用 along比使用 a 小 5 倍,Long因此如果内存很重要,我会找到一种方法将自己限制为 18 万亿个标识符。

于 2012-10-26T10:09:31.217 回答
0

您可以将字段声明为 type Number,这将允许BigIntegers 以及Integers 甚至Shorts。

根据您打算对值调用的方法,您可能需要专门检查BigInteger大小写,并向下转换以单独处理。其他一切都可以通过number.longValue().

这样做意味着您的引用能够在需要时保存 a BigInteger,但您可以Short在值允许时传入 a 以节省内存。

于 2012-10-26T10:09:06.790 回答