Java 使用公共密钥合并树映射
我有5个树形图。其中0-20秒范围内的所有树映射的键值相同。树映射中的值不同。我只想添加值(值是字符串,不是整数加法) 这怎么可能 比如说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
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));
}