2011-06-03 72 views
2

我想知道是否有一種方法來創建基於可變數量的Java數組。所以如果我需要創建10個數組,一個循環會產生10個(全部按順序命名)。但如果我不需要10個數組,循環會創建並根據需要創建多個循環。有沒有一種方法可以使用java中的循環創建可變數量的數組?

我設想是這樣的:

for(i=0 up to i=imax) 

create arrayi 

其中i爲變量的for循環。

如果IMAX設置爲3,將產生:陣列0,數組1,數組2,ARRAY3

感謝。

+0

請準確應該是什麼這些陣列應包含和有多大。 – Alp 2011-06-03 21:33:13

回答

7

是的;你可以創建一個數組數組。比方說,你想要的int陣列:

int numberOfArrays = 10; 
int[][] arrays = new int[numberOfArrays][]; 
for (int i = 0; i < numberOfArrays; i++) 
    arrays[i] = new int[x]; // Where x is the size you want array i to be 

但是,您可以動態創建變量稱爲array0array1,等等。對於多維數組,不需要這樣的變量集合,因爲您可以寫arrays[0]arrays[1];這也更加靈活,因爲您可以使用arrays[i]索引到數組集合,如果您有array0array1等,則無法執行此操作。

+0

是的,與想要的解決方案最相似的東西是使用Hashmap Voo 2011-06-03 21:40:01

+1

太棒了!這絕對是我將要使用的。我有這個問題在我的腦海中敲了一段時間,但是你的實現更容易,效果更好。 – Andrew 2011-06-03 21:44:14

0

沒有機會做到這一點,你必須採取二維陣列方法...

0

Java不允許這種元編程。你不能以編程方式聲明變量。

作爲@Aasmund寫道,你可以做的是聲明一個數組來保存你的數組。

爲了您的具體問題,這是結果想什麼:

String[][] array = new String[IMAX][]; 
for (int i = 0; i < array.length; ++i) { 
    array[i] = createArray(...); 
} 

// cannot use 'array2', but something close: 
String[] contents = array[2]; 
相關問題