> 一个?,java,hashmap,multimap"/>

首页 > 解决方案 > 如何合并两个ArrayList> 一个?

问题描述

ArrayList<Map<String, String>> result1

result1就好像

(1, a)
(2, a)
(3, b)
(4, e)
(5, e)

ArrayList<Map<String, String>> result2

result2就好像

(1,android)
(2,ios)
(3,android)
(4,android)
(5,ios)

我想合并两张地图来构建一张这样的地图

(1, ( a, android))
(2, ( a, ios))
(3, ( b, android))
(4, (e, android))
(5, (e, ios))

如何做到这一点?

标签: javahashmapmultimap

解决方案


对于您在此处指定的要求,您可以这样做。

我正在遍历第一张地图的键。并从所有地图中收集每个键的值并将它们放入列表中。然后将列表放入生成的地图中。

import java.util.*;

public class MergeMaps
{
  public static void main(String[] args)
  {
    Map<String, String> map1 = new HashMap<>();
    map1.put("1", "a");
    map1.put("2", "a");
    map1.put("3", "b");
    map1.put("4", "e");
    map1.put("5", "e");

    Map<String, String> map2 = new HashMap<>();
    map2.put("1", "android");
    map2.put("2", "ios");
    map2.put("3", "android");
    map2.put("4", "android");
    map2.put("5", "ios");

    Set<String> keys = new HashSet<>();
    keys.addAll(map1.keySet());
    keys.addAll(map2.keySet());

    Map<String, List<String>> mergedMap = new HashMap<>();
    for (String key : keys)
    {
      List<String> list = new ArrayList<>();
      list.add(map1.get(key));
      list.add(map2.get(key));
      mergedMap.put(key, list);
    }

    System.out.println(mergedMap);
  }
}

输出将是:

{1=[a, android], 2=[a, ios], 3=[b, android], 4=[e, android], 5=[e, ios]}


推荐阅读