2010-02-15 68 views

回答

8
HashMap map = new HashMap(); 
Object[][] arr = new Object[map.size()][2]; 
Set entries = map.entrySet(); 
Iterator entriesIterator = entries.iterator(); 

int i = 0; 
while(entriesIterator.hasNext()){ 

    Map.Entry mapping = (Map.Entry) entriesIterator.next(); 

    arr[i][0] = mapping.getKey(); 
    arr[i][1] = mapping.getValue(); 

    i++; 
} 
+0

現在我們可以創建一個oneliner了嗎? –

5

這隻能在鍵和值的類型相同時才能完成。

考慮:

HashMap<String,String> map; 

我可以創建這個地圖的數組,這個簡單的循環:使用entrySet

String[][] array = new String[map.size()][2]; 
int count = 0; 
for(Map.Entry<String,String> entry : map.entrySet()){ 
    array[count][0] = entry.getKey(); 
    array[count][1] = entry.getValue(); 
    count++; 
} 
-1

遍歷您的地圖,並與Entry對象

填寫您的數組記錄
3

Object[][] array = new Object[][]{map.keySet.toArray(), map.entrySet.toArray()}; 

或者,更具體的有關類型,讓我們說他們是StringsSettoArray需要提示的說法,讓

String[][] array = new String[][]{map.keySet.toArray(new String[0]), map.entrySet.toArray(new String[0])}; 

編輯:我只是意識到了兩天後雖然這可能偶然的工作,一般來說它不應該。原因是中間Set;雖然它是「以地圖爲後盾」,但似乎沒有明確保證它會按任何特定順序迭代。因此,密鑰和入口數組可能不是相同的順序,這肯定是一場災難!