请问一下,在HASHMAP中如何以:“键 值” 的方式打印出整个表举个列子,
HashMap<String,String> it = new HashMap<String,String>();it.put("a","i");
it.put("a","you");
it.put("a","go");
it.put("b","take");
it.put("b","get");要求能打印出成如下的方式
a i you go
b take get我尝试采用标准的Map.Entry<String,Srtring>...方式,感觉不方便。请问下有无比较有效的办法。

解决方案 »

  1.   

    给分,呵呵~
    import java.util.ArrayList;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Set;
    import java.util.Map.Entry;public class MapPrintUtil {  private LinkedHashMap<String, List<String>> maplist = new LinkedHashMap<String, List<String>>();  public void put(String key, String value) {
        if (!maplist.containsKey(key)) {
          List<String> lst = new ArrayList<String>();
          lst.add(value);
          maplist.put(key, lst);
        }
        else {
          List<String> lst = maplist.get(key);
          lst.add(value);
        }
      }  public void print() {
        Set<Entry<String, List<String>>> set = maplist.entrySet();
        for (Entry<String, List<String>> entry : set) {
          String key = entry.getKey();
          List<String> lst = entry.getValue();
          print(key, lst);
        }
      }  private void print(String key, List<String> lst) {
        StringBuffer buffer = new StringBuffer();
        buffer.append(key);
        for (String value : lst) {
          buffer.append(" ");
          buffer.append(value);
        }
        System.out.println(buffer.toString() + "\n");
      }  public static void main(String[] args) {
        MapPrintUtil util = new MapPrintUtil();
        util.put("a", "i");
        util.put("a", "you");
        util.put("a", "go");
        util.put("b", "take");
        util.put("b", "get");
        util.print();
      }}
      

  2.   

    java.util.HashMap 不支持的你的想法,它只支持一一映射,不支持一多映射。
    Google collections 提供了 MultiMap 支持一多映射。
      

  3.   

    你确定能把这些值都塞到 Map 中去?
      

  4.   

    你可以使用HashMap<String,List<String>> it = new HashMap<String,List<String>>();
    来实现你的功能