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 ビットの符号付きの値を使用できる場合、a を使用するlongと、a を使用するよりも 5 倍小さいLongので、メモリが重要な場合は、18 兆個の識別子に制限する方法を見つけます。

于 2012-10-26T10:09:31.217 に答える
0

フィールドが type であることを宣言できます。これにより、 s だけでなくs または s さえもNumber許可されます。BigIntegerIntegerShort

値に対して呼び出す予定のメソッドによっては、BigIntegerケースを明確にチェックし、ダウンキャストして個別に処理する必要がある場合があります。他のすべては 経由で処理できますnumber.longValue()

これを行うと、参照は必要に応じて a を保持できBigIntegerますが、代わりに a を渡してShort、値が許容される場合にメモリを節約できます。

于 2012-10-26T10:09:06.790 に答える