Java 使用公共密钥合并树映射

Java 使用公共密钥合并树映射,java,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-o

我有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)

我知道,我没有代码,但我想要一个想法,我应该如何为这个写代码,所以我问了。由于缺少代码,请不要将其标记为负数

设置一个
StringBuilder[21]
,然后遍历所有
映射的
入口集
,将值附加到数组中的相应条目。

我会使用Guava的类:


你可以试试下面的方法。如果所有贴图的键和大小都相同,则可以推广以下方法

TreeMap map1=新的TreeMap()

TreeMap map2=newtreemap();
map1.put(1),“(1,1)”;
map1.put(2),“(3,3)”;
map2.put(1),“(2,3)”;
map2.put(2),“(4,4)”;
TreeMap finalMap=newtreemap();
对于(整数i:map1.keySet()){
finalMap.put(i,map1.get(i)+“+”+map2.get(i));
}

既然您现在添加了一个新条件—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));
}
Map输出=newtreemap();

对于(int i=1;i@StephenC,是的,但我不知道如何保持键不变并附加值,而不是添加值。我没有得到它。@StephenC:将其标记为负,mann。我突然想到,如果所有树映射都有全部20个键,那么您可以在一个循环中完成所有操作。我最初的答案假设一些树映射将缺少一些键。你能确认一下所有的树状图是否都有所有的键吗?如果是,我将发布第二个答案,只使用一个循环。@DavidWallace所有的树状图都有20个键,但每个树状图也有一些额外的键,我不想存储。好的,那么我将发布一个不同的解决方案。这会对问题产生稍微不同的看法。我没有理解附加部分阅读javadoc for StringBuilder…特别是“append”方法。(请注意,我怀疑David可能误解了您的问题,因为我不明白为什么您需要一个StringBuilder数组。您想要一个树映射作为输出…)好的,在最后,你可以遍历数组,将值转换回字符串,然后将它们推回到树映射中进行输出。创建数组的原因是因为键是0到20之间的整数(或者是1到20?),所以为StringBuilder创建树映射似乎没有多大意义。
output.put(entry.getKey(), String.format("%s%s", output.get(entry.getKey()).isEmpty() ? "" : output.get(entry.getKey())+"+", entry.getValue())); 
    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));
    }
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));
}