【问题标题】:compareing and merging two TreeMaps比较和合并两个 TreeMap
【发布时间】:2014-11-28 21:23:36
【问题描述】:

我用 Java 制作了两个这样的多图:

TreeMap1 = {key1=[a,b,c], key2=[d,e,f]}
TreeMap2 = {key1=[j,k], key2=[z,p]}

如何将具有与 TreeMap1 中相似键的 TreeMap2 的值添加到 TreeMap1 的值中,并生成第三个 TreeMap Like:

TreeMap3 =  {key1=[a,b,c,j,k], key2=[d,e,f,z,p]}

这个方法什么也没给我。

public TreeMap<String, List<String>> make_TreeMap3(){
    for(Entry<String,List<String>> entry_t1 :this.map_FuncType.entrySet()){ 
        for(Entry<String,List<String>> entry_t2 : this.map_AufOrgUserField.entrySet()){
            if(entry_t2.getKey().contains(entry_t1.getKey())){              
                entry_t2.getValue().addAll(entry_t1.getValue());
            }   
        }
    }
    return map_mergOrgandType;  
}

【问题讨论】:

  • 也许你应该返回entry_t2而不是map_mergOrgandType
  • map_mergOrgandType 是从哪里来的?

标签: java iterator key-value treemap


【解决方案1】:

这样的?

TreeMap<String, List<String>> treeMap3 = new TreeMap<>(treeMap1);
for (String k : treeMap3.keySet()) {
    if (treeMap2.containsKey(k)) {
        treeMap3.get(k).addAll(treeMap2.get(k));
    }
} 
return treeMap3;

【讨论】:

    【解决方案2】:

    如果您愿意使用 3rd 方库,在 Guava 中很容易做到。

    public class MultimapMerge {
      public static void main(String[] args) {
    
        Multimap<String, String> map1 = TreeMultimap.create();
        map1.put("key1", "a");
        map1.put("key1", "b");
        map1.put("key1", "c");
        map1.put("key2", "d");
        map1.put("key2", "e");
        map1.put("key2", "f");
    
        Multimap<String, String> map2 = TreeMultimap.create();
        map2.put("key1", "j");
        map2.put("key1", "k");
        map2.put("key2", "z");
        map2.put("key2", "p");
    
        Multimap<String, String> map3 = TreeMultimap.create();
        map3.putAll(map1);
        map3.putAll(map2);
        System.out.println(map3);
      }
    }
    

    http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Multimap.html

    【讨论】:

    • 感谢您的帮助,但在这种情况下我不想使用第三方库。
    猜你喜欢
    • 2013-11-26
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多