日期:2014-05-20  浏览次数:20653 次

大家好,小弟有个关于HashMap的问题请教,多谢了
小弟java刚入门,想请教大家:
  Map   map   =   new   HashMap();
  map.put( "key1 ", "value1 ");
  map.put( "key2 ", "value2 ");
  map.put( "key3 ", "value1 ");
  map.put( "key4 ", "value1 ");

  小弟想把value相同的所有key合并成一个字符串,
  比如值为value1对应的所有key为: "key1 "   +   "key3 "   +   "key4 "
          值为value2对应的所有key就只有 "key2 "
请问这如何实现,多谢大家了!

------解决方案--------------------
为什么要合这个呢,不能进去前 合了。或者出来才合。把详细的应用说下看
------解决方案--------------------
Map不大就采用最老的循环做吧。
比较value相等就连接key
------解决方案--------------------
换个思路,新建 Map 让其键值互换,就方便多了。

public static void main(String[] args) {
  Map <String, String> map = new HashMap <String, String> ();
  map.put( "key1 ", "value1 ");
  map.put( "key2 ", "value2 ");
  map.put( "key3 ", "value1 ");
  map.put( "key4 ", "value1 ");

  Map <String, String> map2 = new HashMap <String, String> ();

  for (Map.Entry <String, String> entry : map.entrySet()) {
    String value = map2.get(entry.getValue());
    if (value == null) {
      value = entry.getKey();
    } else {
      value = value + ", " + entry.getKey();
    }
    map2.put(entry.getValue(), value);
  }

  // 输出结果
  for (Map.Entry <String, String> entry : map2.entrySet()) {
    System.out.println(entry.getKey() + " --> " + entry.getValue());
  }
}