我有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)
我知道,我没有代码,但我想要一个想法,我应该如何为此编写代码,所以我问过。由于缺少代码,请不要将其标记为否定。
答案 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));
}
它并不优雅,但它可以完成工作,但要符合您规定的条件;这很容易理解。