2013-02-18 198 views
0

我有一個HashMapString作爲關鍵和List作爲值。如何通過hashmap值遍歷列表

HashMap的名稱是pageMap

說這話pageMap具有以下鍵和值:

​​

現在我想在下面的模式顯示:

order 
    page1 
    page2 
    page3 

key2 
    value1 
    value2 
    value3 
    value4 

請告訴我,我該怎麼做呢?

+2

你試過了什麼?你面臨什麼問題? – 2013-02-18 22:59:31

+0

爲了獲得良好的指導,最好展示一些代碼 – 2013-02-18 22:59:42

+0

請添加您到目前爲止嘗試過的代碼。 – Ankit 2013-02-18 23:21:30

回答

3
import java.util.*; 
import java.lang.*; 

public class StringListMapExample { 

    public static String asTreeFormattedString(HashMap<String,List<String>> map) { 
     final StringBuilder builder = new StringBuilder(); 
     for (String key : map.keySet()) { 
      builder.append(key + "\n"); 
      for (String string : map.get(key)) { 
       builder.append("\t" + string + "\n"); 
      } 
     } 
     return builder.toString(); 
    } 

    public static void main(String[] args) { 
     HashMap<String, List<String>> map = new HashMap<String, List<String>>(); 
     map.put("order", Arrays.asList(new String[]{"page1", "page2", "page3"})); 
     System.out.println(asTreeFormattedString(map)); 
    } 
} 
+0

非常感謝Jeppi! – 2013-02-19 01:02:15

0

其實解決方案非常簡單。

hashmap.get(key).iterator(); 

是給定鍵的列表的迭代器。

你爲什麼不嘗試自己看着辦吧?

+0

可能是我很懶惰...或試圖學習不同的方式來實現解決方案:) – 2013-02-19 01:18:52

0
Iterate using iterator through all keys of hashmap using keyset() 

{ 

    print key 

    Iterate through value list using iterator 

    { 

    print each value 

    } 

} 
0
public String formatDictionary(Map<String, List<String>> map){ 
    String output = ''; 
    for (String key : map.keySet()){ 
     output = output + key + "\n"; 
     for (String value: map.get(s)){ 
      output = output + "\t" + value + "\n"; 
    return output 

這是非常相似Jeppi的答案,但使用字符串連接這是我關於Java最喜歡的事情之一。我沒有運行任何基準測試,但我的猜測是他的速度會更快一些,但我的開銷會更少。