我有多个树状图,我只想在一个树状图求和值相同的关键和有效。比如:
TreeMap<String,Long> sum(TreeMap<String,Long> tm1,TreeMap<String,Long> tm2);
我试着做这个,但是我。我无法将列表再次转换为树状图和2。如果等于:
TreeMap<String,Long> tm1=new TreeMap<String, Long>();
...
TreeMap<String,Long> tm2=new TreeMap<String, Long>();
...
List<Map.Entry<String,Long>> first = new ArrayList<Map.Entry<String,Long>>(tm1.entrySet());
List<Map.Entry<String,Long>> second = new ArrayList<Map.Entry<String,Long>>(tm2.entrySet());
Iterable<Map.Entry<String,Long>> all = Iterables.mergeSorted(
ImmutableList.of(first, second), new Ordering<Map.Entry<String, Long>>() {
@Override
public int compare(java.util.Map.Entry<String, Long> stringLongEntry, java.util.Map.Entry<String, Long> stringLongEntry2) {
return stringLongEntry.getKey().compareTo(stringLongEntry2.getKey());
}
});
TreeMap<String,Long> mappedMovies = Maps.uniqueIndex(... ??)
编辑:我不能使用Java8,因为这个程序运行在只支持Java1.7的AmazonWeb服务中的hadoop程序中。
2条答案
按热度按时间k2fxgqgv1#
您可以使用Java8流来实现这一点。考虑以下代码:
总结
Map
按键分组,按值汇总。输出为:总结:{a=1,b=1,c=3,d=2,e=2}
如果要将其放入函数中,只需执行以下操作:
要阅读有关Java8流的更多信息,请查看oracle文档。
mfuanj7w2#
以下函数计算总和:
测试代码:
输出:
编辑
一个小的优化就是复制最大的
TreeMap
迭代最小的。这减少了查找/插入的数量。