如题

解决方案 »

  1.   

    为什么要这么做呢?你把key做遍历,两次循环,遇到一样的就把相同的value合并就好啦,java似乎没有提供这样的api
      

  2.   

    我查了common collection的api,似乎也没看到相应的api
    看样子只能遍历合并了
    原因是:项目中数据库操作的数据都放在map中,有两次操作就需要合并map了
      

  3.   

    Map = Kev=>Value如果2个map有重复的,怎么办?保留哪一个呢?如果你不在意, map1.addAll(map2) 就行了
      

  4.   

    有同样的key。你要留住哪个属性?map里不能有2个key!
      

  5.   

    两个map的key完全相同
    只是要合并key对应的value
      

  6.   

    楼主的意思是不是 将两个map中 key相同的value合并起来成为一个新的object,以该object为value原先key为key,生成一个新的Map??
      

  7.   


     public static void main(String[] args) {
            // Map<String, Object> map = new HashMap<String, Object>();
            Map<String, Object> now = new HashMap<String, Object>();
            Map<String, Object> map1 = new HashMap<String, Object>();        map1.put("1",new Integer(1));
            map1.put("2",new Integer(2));
            map1.put("3",new Integer(3));
            Map<String, Object> map2 = new HashMap<String, Object>(map1);
            Set<String> set = map1.keySet();
            Iterator<String> i = set.iterator();
            while (i.hasNext()) {
                String s1 = i.next();
                now.put(s1,new Object[] {map1.get(s1), map2.get(s1)});
            }
        }
      

  8.   

    哪有上面他们说的那么麻烦,如下即可:
    HashMap map=new HashMap();
    map.put("1", "A");
    HashMap map1 = new HashMap();
    map1.put("2", "B");
    map1.put("3", "C");
    map.putAll(map1);
                    System.out.println(map);打印结果:
    {3=C, 2=B, 1=A}
    如果是如下:
    HashMap map=new HashMap();
    map.put("1", "A");
    HashMap map1 = new HashMap();
    map1.put("2", "B");
    map1.put("1", "C");
    map.putAll(map1);
    System.out.println(map);
    打印结果:
    {2=B, 1=C}所以说用putAll就可以合并两个MAP,只不过如果有相同的key那么用后面的覆盖前面的
      

  9.   

     now.put(s1,new Object[] {map1.get(s1), map2.get(s1)});
    如果map中key对应value是数组,没有对其进行合并
    也就是如果value1中有三个值,value2中有五个值,合并之后应该有八个值了
      

  10.   

    public static void main(String[] args)throws Exception {
         Map<String,List<String>> m1=new HashMap<String,List<String>>();
         Map<String,List<String>> m2=new HashMap<String,List<String>>();     List<String> list1=new ArrayList<String>(Arrays.asList("A","B","C"));
         List<String> list2=new ArrayList<String>(Arrays.asList("D","E","F"));
         m1.put("1",list1);
         m2.put("1",list2);
         
         Map<String,List<String>> map=new HashMap<String,List<String>>();
         Set<String> set=m1.keySet();
         Iterator<String> it=set.iterator();
         while(it.hasNext()) {
             String str=it.next();
             map.put(str,new ArrayList<String>( Arrays.asList(m1.get(str),m2.get(str)) ) );
         }     System.out.println("m1 \n"+m1);
         System.out.println("m2 \n"+m2);
         System.out.println("合并后的Map \n"+map);
    }
    这个行吗,我身边API,在网吧做的,嘿嘿,估计很烂
      

  11.   

    可以将两个Map中相同key的value放在一个vector里面。然后将这个vector作为一个value与这个可以相对应就可以了 
      

  12.   

    map.put(str, new ArrayList<String>(Arrays.asList(m1.get(str), m2.get(str))));
    这句编译不过
      

  13.   


    /**
     * 将两个map中key相同的value合并起来
     * 
     * @param map1
     * @param map2
     * @return
     */
    public static Map combine(Map map1, Map map2) {
    if ("0".equals(getString(map1, "resultCount"))) {
    return map2;
    }
    Object[] value1 = null;
    Object[] value2 = null;
    Set set = map1.keySet();
    Iterator iterator = set.iterator();
    Object key = null;
    List list = null;
    for (int index = 0; index < set.size(); index++) {
    key = iterator.next();
    Object valueTemp1 = map1.get(key);
    Object valueTemp2 = map2.get(key);
    if (null == valueTemp1 || null == valueTemp2) {
    continue;
    }
    value1 = ((List) valueTemp1).toArray();
    value2 = ((List) valueTemp2).toArray();
    Object[] value = new Object[value1.length + value2.length];
    System.arraycopy(value1, 0, value, 0, value1.length);
    System.arraycopy(value2, 0, value, value1.length, value2.length);
    list = (List) Arrays.asList(value);
    log.debug("key is:" + key + ",after combine,list is:" + list);
    map1.put(key, list);
    }
    return map1;
    }这是我目前使用的代码,希望大家提出意见