2013-07-21 45 views
1

我需要通過從ArrayList中強制轉換來創建一個返回int數組的方法。這裏是我的代碼:通過從Java中的ArrayList轉換來返回數組

public int[] getDestSets() 
{ 
    int[] array = new int[destSet.size()]; 
    destSet.toArray(array); 
    return array; 
} 

destSet是一個整數ArrayList。我得到錯誤「類型ArrayList中的方法toArray(T [])不適用於參數(int [])」。任何人都可以給我一個提示嗎?謝謝!

+0

對原語不起作用。 – arynaq

+0

ArrayList只能保存對象而非原語。所以它實際上是ArrayList 而不是int。你需要一個強制轉換(int []) – HectorLector

+0

請問爲什麼你需要返回一個int數組?應該避免使用數組,除非你處理的是不需要控制的代碼,在這種情況下,你應該在處理集合的接口下隱藏該代碼。 – sjr

回答

1

您可以嘗試使用ArrayUtils類從Apache下議院Lang庫。它需要兩個步驟。首先將ArrayList轉換爲包裝對象數組(Integer [])。之後,您可以使用ArrayUtils.toPrimitive()將其轉換爲int(int [])數組。

1

儘管包裝類Integer將被自動拆箱爲int原語,但數組/列表不會自動拆箱到int數組。

你必須做,艱難地:

public int[] getDestSets() { 
    int[] array = new int[destSet.size()]; 
    int x = 0; 
    for (Integer i : destSet) 
     array[x++] = i; 
    return array; 
} 
+0

謝謝,波希米亞!答案很清楚。 – user2570387