2013-12-12 54 views
3

我有一個TreeMap,它有一個字符串鍵,值部分是一個包含至少四個值的List。TreeMap to ArrayList Java

Map<String,List<String>> mMap = new TreeMap<String,List<String>>(); 

我正在使用樹形圖,以便對鍵進行排序。然而,在我想將這個TreeMap映射到一個列表視圖之後。我想將Map轉換爲列表,然後爲listview構建一個適配器。但是我不能把它轉換當我做

ArrayList<String> trendyList = new ArrayList<String>(mMap); 

它說:The constructor ArrayList<String>(Map<String,List<String>>) is undefined

是否有其他方法可以讓我做到這一點?

+0

'trendyList'應該包含鍵或值? – mishadoff

+0

我的壞!它只能包含鍵或值。然而我很傻,我忘了這個事實。 Lorem ipsum dolor坐amet! – User3

+0

這個問題在android中具體是什麼? –

回答

10

假設你要的字符串列表清單:

List<List<String>> trendyList = new ArrayList<>(mMap.values()); 

如果要合併的名單,然後就變成了複雜一點,你需要通過值自己運行和執行合併。

要合併的名單:

List<String> trendyList = new ArrayList<>(); 
for (List<String> s: mMap.values()) { 
    trendyList.addAll(s); 
} 

要與鍵合併列表:

List<String> trendyList = new ArrayList<>(); 
for (Entry<String, List<String>> e: mMap.entrySet()) { 
    trendyList.add(e.getKey()); 
    trendyList.addAll(e.getValue()); 
} 
+0

是的每個鍵我必須合併四個值並創建一個新的列表。 – User3

+0

給我一個值列表,但是鍵也是重要的。我需要在特定的鍵值之前添加它們。 – User3

+1

已添加。雖然我不會爲你編寫整個程序。你可以從這裏拿走它。 –

1

一個地圖可以被視爲鍵值對的colleciton,列表僅是一個集合值。你必須選擇是否你現在想要你的鑰匙,那麼你使用keySet()或者如果你想你的價值比你使用values()這將返回一個集合List<String>