【问题标题】:java: join all hashmaps from an array listjava:连接数组列表中的所有哈希图
【发布时间】:2012-08-21 09:22:56
【问题描述】:

我有一个哈希图列表,我想将这些哈希图合并为一个(键应该是唯一的)。我该怎么做?谁能给个提示?

【问题讨论】:

  • 创建一个根哈希图,遍历列表,为每个哈希图通过每个(键,值)对添加它到根哈希图。如果您发现重复的密钥,您将决定该怎么做

标签: java list hashmap


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你应该看看Map.putAll()函数

    【讨论】:

      【解决方案3】:

      您可以从哈希映射中迭代 trought 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;
          }
      

      【讨论】:

        【解决方案4】:

        Map 有方法putAll(Map m)。遍历您的列表并在结果图上为每个条目执行putAll

        【讨论】:

          【解决方案5】:

          您可以使用 for-each 循环并使用HashMap.putAll()从一个哈希图中的列表中一一添加映射

          【讨论】:

            【解决方案6】:

            循环通过list 并使用putAll() 将所有地图添加到结果地图中

            【讨论】:

              【解决方案7】:

              方法如下:

              1. 创建一个新的(大)哈希图,其中将包含合并的键值对 对

              2. 遍历您的列表

              3. 对于列表中的每一项,遍历相关的哈希图

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-11-29
                • 2011-07-23
                • 1970-01-01
                • 2014-03-08
                • 1970-01-01
                • 1970-01-01
                • 2014-02-01
                • 2016-07-02
                相关资源
                最近更新 更多