2016-06-01 504 views
-3

我有一個List<HashMap<String,String>>,我想在java中將它轉換爲List<Map<String,String>>。有人可以幫助我嗎? 謝謝轉換List <HashMap <String,String >>到列表<map <String,String >> java

+0

嗯。在大多數情況下,這些似乎已經足夠兼容。你到底需要做什麼?請顯示一些代碼。 – Thilo

+0

是什麼促使你這麼想?恕我直言,幾乎所有你可以用HashMap實現的,你可以使用Map來完成。 – Rockstar

+0

這是這樣的。我有另一個方法返回List >。在調用後,我需要在List >的其他全局變量中進行賦值。不幸的是,我不能改變該方法的返回類型或該公共變量的類型。這就是爲什麼我需要這種轉換。 –

回答

0

沒有什麼,但你必須創建一個新的地圖列表。然後遍歷HashMap列表,並簡單地將每個對象添加到Map列表中。如下所示:

List<HashMap<String, String>> hashMapList = new LinkedList<HashMap<String, String>>(); 
HashMap<String, String> hashMap = new HashMap<String, String>(); 
hashMap.put("Ussain", "Bolt"); 
hashMapList.add(hashMap); 

List<Map<String, String>> mapList = new LinkedList<Map<String, String>>(); 
for (HashMap<String, String> map : hashMapList) { 
    mapList.add(map); 
} 

希望這能解決您的問題。

1

你覺得比較容易。通過您的原始列表

List<Map<String, String>> result = new List<>(); 

然後,就循環和每個項目添加到新的列表:

首先,創建一個List<Map<String, String>>

// This for loop basically says "for each item in yourOriginalList..." 
// if you didn't know 
for (HashMap<String, String> item : yourOriginalList) { 
    result.add(item); 
} 

「爲什麼我可以添加一個HashMapMap s的列表?「你可能會問。因爲多態性。由於Map是一個接口,並且HashMap implements Map,無論你需要Map,只要泛型類型參數相同,就可以給它一個HashMap

+0

此外,似乎過度必須複製清單。難道它不能被施放(即使它通常不安全)? – Thilo

+0

我用Java7編譯器測試了轉換和複製構造函數,但都沒有編譯。也許它可以用Java 8編譯? @Thilo – Sweeper

+0

我認爲你必須使用不安全的轉換('list =(List)originalList')。是的,會有關於它的警告。 – Thilo

相關問題