2013-02-18 114 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最喜欢的事情之一。我没有运行任何基准测试,但我的猜测是他的速度会更快一些,但我的开销会更少。