将TreeMaps与公共密钥合并

时间:2014-03-28 02:51:01

标签: java

我有5个树图。其中键值对于0-20秒范围内的所有树图都是相同的。树形图中的值不同。我想要添加值(值是字符串,而不是整数加法)。

这怎么可能?

例如

treemap1 :

Time(key) , co-ordinate(Value)
1,(1,1)
2,(2,4)
...
20 (8,5)


treemap2 :

Time(key) , co-ordinate(Value)
1,(1,5)
2,(9,4)
...
20 (5,6)

...

treemap5 :

Time(key) , co-ordinate(Value)
1,(4,4)
2,(8,1)
...
20 (7,4)



Output:

treemap :

Time(key) , co-ordinate(Value)
1,(1,1)+(1,5)+(4,4)
2,(2,4)+(9,4) +(8,1)
...
20 (8,5)+(5,6)+(7,4)

我知道,我没有代码,但我想要一个想法,我应该如何为此编写代码,所以我问过。由于缺少代码,请不要将其标记为否定。

4 个答案:

答案 0 :(得分:0)

设置StringBuilder[21],然后遍历所有entrySets的{​​{1}},将值附加到数组中的相应条目。

答案 1 :(得分:0)

我会使用Guava的Iterables类:

TreeMap<Integer,String> map1 = ...
TreeMap<Integer,String> map2 = ...
TreeMap<Integer,String> map3 = ...
TreeMap<Integer,String> map4 = ...
TreeMap<Integer,String> map5 = ...

final Map<Integer,String> output = new TreeMap<>();

for(final Map.Entry<Integer,String> entry : Iterables.concat(map1.entrySet(), map2.entrySet(), map3.entrySet(), map4.entrySet(), map5.entrySet())) {
    if(!output.containsKey(entry.getKey())) {
      output.put(entry.getKey(), "");
    }
    output.put(entry.getKey(), output.get(entry.getKey())+entry.getValue());
}

如果你真的想要加号,那么这将在没有分隔符的情况下追加值:

output.put(entry.getKey(), String.format("%s%s", output.get(entry.getKey()).isEmpty() ? "" : output.get(entry.getKey())+"+", entry.getValue())); 

答案 2 :(得分:0)

您可以尝试以下内容。如果所有地图都有相同的键和否则您可以概括以下方法。

TreeMap map1 = new TreeMap();

    TreeMap<Integer,String> map2 = new TreeMap<Integer,String>();

    map1.put(1, "(1,1)");
    map1.put(2, "(3,3)");

    map2.put(1, "(2,3)");
    map2.put(2, "(4,4)");

    TreeMap<Integer,String> finalMap = new TreeMap<Integer,String>();

    for(Integer i : map1.keySet()){
        finalMap.put(i, map1.get(i) + "+" + map2.get(i));
    }

答案 3 :(得分:0)

由于您现在添加了一个新条件 - 1到20之间的密钥是您唯一关心的密钥,并且这些密钥位于所有地图中,您可以执行以下操作。

Map<Integer,String> output = new TreeMap<Integer,String>();
for (int i=1; i<=20; i++) {
    output.put(i, map1.get(i)+map2.get(i)+map3.get(i)+map4.get(i)+map5.get(i));
}

它并不优雅,但它可以完成工作,但要符合您规定的条件;这很容易理解。