Javaでは、BigIntegerは不変ですが、多くの時間をかけて多くの計算を実行して多くのオブジェクトを生成することができるため、理由を理解したいと思います。それで、それは不変にしないように直感的な感じです。私の心に来る状況は、文字列操作のようなもので、次にStringBuilderのオプションです。 BigIntegerの不変でない対応があるでしょうか?私はそれが多くの状況で有益かもしれないと思う。なぜJavaのBigIntegerは不変であるように設計されていますか?
編集:私は、不変性の利点と、多くの場合それがどのように有益であるかを知っています。 BigIntegerの利点を理解したかっただけです。 BigIntegerを使って大きな数の階乗を計算しました。だから、私は変更可能なBigIntegerを好むでしょう。同様に、BigIntegerは結果がintよりもはるかに大きい計算に使用されます。それ以外の場合はBigDecimalがあります。ジョシュ・ブロッホ
変更可能な 'BigInteger'として(並べ替え)として' BitSet'を使うことができます。 –
短命オブジェクトは安価であり、不変オブジェクトには多くの利点があります。 – chrylis
* "多くの状況で有益かもしれないと思う" * ...実際にはスーパーパフォーマンスの重要な状況では重要なことかもしれないが、想定しているように全体的に多くの状況ではないかもしれない。しかし、プロファイリングで証明されたパフォーマンス重視のコードブロックが実際にあれば、変更可能なコンパニオンクラスが答えになります。 – scottb