2010-04-26 19 views
12

假設我需要製作一系列String []對象。如何在Java中動態命名對象?

我知道,如果我想創建一個名爲「測試」舉行3個字符串字符串數組我可以做

的String [] =測試新的String [3];

但是,讓我們說,我需要做出一系列的這些陣列的,我想他們被命名爲,1,2,3,4,5 ...等。然而,許多我需要的,我不知道如何很多我需要。

如何實現這種類似的效果:

for (int k=0; k=5; k++){ 
String[] k = new String[3]; 
} 

這將創建一個名爲5個1字符串數組至5基本上,我希望能夠與其他一些功能detemined的名稱創建數組對象。爲什麼我似乎無法做到這一點?我只是在愚蠢嗎?

+0

什麼是你對這種行爲思想的使用情況?也許知道我們可以幫助你找到一種Java方式來做你想做的事,而不用動態命名變量。 – Phil 2010-04-26 03:58:29

回答

17

有沒有任何「變量變量」(即變量名的變量)在Java中,但您可以創建地圖或陣列處理您的具體問題。當你遇到一個讓你覺得「我需要我的變量動態地改變名字」的問題時,你應該試着去思考「關聯數組」。在Java中,您可以使用Map s獲得關聯數組。

也就是說,你可以保持您的陣列的列表,像這樣:

List<String[]> kList = new ArrayList<String[]>(); 
for(int k = 0; k < 5; k++){ 
    kList.add(new String[3]); 
} 

也許一點點接近你以後,你可以使用地圖:

Map<Integer,String[]> kMap = new HashMap<Integer,String[]>(); 
for(int k = 0; k < 5; k++){ 
    kMap.put(k, new String[3]); 
} 
// access using kMap.get(0) etc.. 
3

你會在Java中得到最接近的是:

Map<String, String[]> map = new HashMap<String, String[]>(); 

for (int k=0; k=5; k++){ 
    map.put(Integer.toString(k), new String[3]); 
} 

// now map.get("3") will get the string array named "3". 

注意"3"不是一個變量,但是在CON它與map對象結合起來就像一個......有點類似。

2

你想要做什麼叫做元編程 - 編寫一個程序,該Java不支持(它允許僅元數據通過註釋)。但是,對於這樣一個簡單的用例,你可以創建一個方法,它將接受一個int並返回你想要的字符串數組,例如,通過訪問數組的數組。如果您想要一些更復雜的命名約定,請考慮使用swtich語句獲取少量值並映射更多值。對於具有自定義名稱的固定數量的值,定義一個Enum,它可以作爲參數傳遞。

7

其他人已經提供了極大的答案,只是涵蓋所有基地的Java確實有數組的數組。

String[][] k = new String[5][3]; 
k[2][1] = "Hi!"; 

現在,你不必有5個變量命名爲​​,k2k3k4,​​,每一個都是String[3] ...

...但你確實有String[]數組,k[0]k[1]k[2]k[3]k[4],每一個都是String[3]