从int Array创建BigInteger数组

时间:2016-03-03 12:25:47

标签: java arrays int biginteger

我有一个int数组。有没有办法将这个int数组直接转换为BigInteger数组而不迭代元素?

2 个答案:

答案 0 :(得分:5)

如果您正在使用

,这应该可以胜任
int[] ints = new int[]{1,2,3};

System.out.println(Arrays.toString(ints)); // [1, 2, 3]

BigInteger[] bigs = Arrays.stream(ints)
                          .mapToObj(BigInteger::valueOf)
                          .toArray(BigInteger[]::new);

System.out.println(Arrays.toString(bigs)); // [1, 2, 3]

答案 1 :(得分:0)

没有办法在没有Java-8 下的迭代的情况下实现这一点(为什么重要的是,性能是否会影响你的运行时?这是你的应用程序的瓶颈吗?你必须知道迭代无论您是否直接使用,“费用”都将从您的申请中收取费用。

无论如何,为了完整起见并使这个答案更有用,你可以这样做:

for (int i = 0; i < arr.length ; i++)
    bigIntegerArray[i] = BigInteger.valueOf(arr[i]);

如果您决定要将int数组转换为 BigInteger,那么构造函数public BigInteger(byte[] val)就是:

  

将包含byte的二进制补码表示形式的BigInteger数组转换为BigInteger。假设输入数组采用big-endian字节顺序:最重要的字节位于第0个元素中。

(正如您可能知道int可以表示为4 byte s)