我有一个int数组。有没有办法将这个int数组直接转换为BigInteger数组而不迭代元素?
答案 0 :(得分:5)
如果您正在使用java-8
,这应该可以胜任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)