2011-08-03 61 views
1

編寫一個將URL編碼的字符串解碼爲關聯數組的函數。如果有兩個名稱相同的參數,則應該將該值堆疊爲一個數組。關聯數組的實現

例如,串

a=1&b=2&a=hello&apple=9&apple=digital 

將被轉換爲關聯數組:

array('a' => array(1,'hello'), 'b'=> 2, 'apple' => array(9,'digital')) 
+0

你居然Ë xpected是爲了實現一個關聯數組,還是僅僅將數據存儲到它呢?因爲標準庫已經提供了一個... –

+3

這是功課嗎? – dckrooney

+0

因此,我不需要實現一個。但我的印象是,java並沒有像關聯數組這樣的數據結構。 – Hozefa

回答

3

考慮使用Map<String, ArrayList<String>>

例如:

Map<String, ArrayList<String>> m = new HashMap<String, ArrayList<String>>(); 

ArrayList<String> arr = new ArrayList<String>(); 
arr.add("value1"); 
arr.add("value2"); 

m.put("key", arr); 

System.out.println(m); // {key=[value1, value2]} 
+0

非常好。實施多地圖的「標準」方式。實際上,我有很多幾乎完全相同的多地圖實現,我希望Java只會內置一個。看起來像這樣一個簡單的類添加到JCF。 –