我需要处理比很多长((10 ^ 200))大的数字,所以我使用BigIntegers.我执行的最常见的操作是将它们添加到累加器,例如:
BigInteger A = new BigInteger("0"); for(BigInteger n : nums) { A = A.add(n); }
当然,制作破坏性操作的副本是相当浪费的(只要有足够的缓冲区可用),所以我想知道Java是否可以以某种方式进行优化(我听说有一个MutableBigInteger类没有被math.java公开)或者我是否应该写我自己的BigInteger类.
解决方法
是的,有一个java.math.MutableBigInteger类,BigInteger用于计算密集型操作.不幸的是,它被声明为包私有,所以你不能使用它. Apache Commons库中还有一个“MutableBigInteger”类,但它只是BigInteger的一个可变包装器,对您而言无济于事.
I was wondering if Java can optimize this somehow …
没有…没有承受上述.
or whether I should just write my own BigInteger class.
这是一种方法
另一个是要下载OpenJDK源码,找到java.math.MutableBigInteger的源代码,更改其包名和访问权限,并将其合并到代码库中.唯一的障碍是OpenJDK是根据GPL(GPL-2我认为)进行许可的,如果您使用修改的类来分发代码,那么它就有影响.
也可以看看: