java:从数组列表中连接所有哈希映射

时间:2012-08-21 09:22:57

标签: java list hashmap

我有一个哈希映射的aray列表,我想将这些哈希映射合并为一个(密钥应该是唯一的)。我该怎么做?任何人都可以给我一个暗示吗?

7 个答案:

答案 0 :(得分:3)

一种方法是创建HashMap ubermap的新实例,迭代ArrayList<HashMap>并调用ubermap的putAll()方法,一次一个地图。智能优化可以为问题ubermap提供较大的初始容量,这样您就可以避免多次重新调用。

答案 1 :(得分:1)

您可以从哈希映射中迭代t Map.Entry个条目。您可以使用entrySet()方法获取条目。 代码应如下所示:

public static <X,Y> Map<X,Y> test(Collection<Map<X,Y>> maps){
    HashMap<X,Y> result = new HashMap<X,Y>();
    for (Map<X,Y> singleMap:maps){
        for(Map.Entry<X,Y> entry:singleMap.entrySet()){
            result.put(entry.getKey(),entry.getValue());
        }
    }
    return result;
}

UPD :许多用户明智地建议使用putAll方法,但我忘记了。所以最好使用这段代码:

   public static <X,Y> Map<X,Y> test(Collection<Map<X,Y>> maps){
        HashMap<X,Y> result = new HashMap<X,Y>();
        for (Map<X,Y> singleMap:maps){
            result.putAll(singleMap);
        }
        return result;
    }

答案 2 :(得分:1)

您应该查看Map.putAll()功能

答案 3 :(得分:0)

Map有方法putAll(Map m)。对列表进行迭代,并在结果映射中为每个条目执行putAll

答案 4 :(得分:0)

您可以使用for-each循环并使用HashMap.putAll()

从一个散列图中的列表逐个添加地图

答案 5 :(得分:0)

循环浏览list并使用putAll()

将所有地图添加到结果地图中

答案 6 :(得分:0)

这是方法:

  1. 创建一个包含合并键值的新(大)hashmap 对

  2. 遍历您的列表

  3. 对于列表中的每个项目,遍历有问题的散列图

  4. 对于hashmap的每个值,在(大)hashmap中添加该对