Java可以在循环中优化“变异”BigInteger操作吗?

前端之家收集整理的这篇文章主要介绍了Java可以在循环中优化“变异”BigInteger操作吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要处理比很多长((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我认为)进行许可的,如果您使用修改的类来分发代码,那么它就有影响.

也可以看看:

> What is the purpose of java.math.MutableBigInteger?

原文链接:https://www.f2er.com/java/123917.html

猜你在找的Java相关文章