2016-03-03 146 views
1

我有一個int數組與我。有沒有辦法將這個int數組直接轉換爲BigInteger數組而無需遍歷元素?從int數組創建BigInteger數組

+0

等待這應該做的工作,你的意思將其轉換爲一個BigIntegers數組,其中每個「int」被轉換爲1'BigInteger'? – Idos

+0

你只是在尋找一個班輪還是你覺得你必須節省迭代的成本? – Ralf

+1

您將需要迭代。沒有逃脫AFAIK – NickJ

回答

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字節順序:最重要的字節位於第零個元素中。

(正如你可能知道int可以表示爲4個byte S)

3

如果你使用

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] 
+0

@YassinHajaj行''toArray(BigInteger [] :: new)'你以前做過的工作,在我看來更清潔。儘管如此,它還是有效的,+1。 –

+1

@ Jean-FrançoisSavard是的,改變它:) –