我有两个TreeMap
第一张地图是:
Map<String, Double> m1 = new TreeMap();
,第二个是:
Map<String,double []> m2 = new TreeMap();
我想在第一个地图中搜索Key到第二个地图,然后将第一个地图的值乘以第二个地图值的列表(对于相似的键)。 之后我将从乘法中得到一个double类型的数组,然后我想对每个索引的值进行求和。
例如:
地图1:
Apple : 1.0
Cat:2.1
Dog:1.2
地图2:
Apple:{2.0,0.0,4.0}
Dog {1.1,0.0,0.0}
Moon:{0.0,5.0,2.0}
结果将是:
Apple{2.0,0.0,4.0}
Dog{1.32,0.0,0.0}
然后总结:
{3.32,0.0,4.0}
这是我的尝试,我在两个矩阵之间进行搜索,然后进行乘法运算。
***我的问题是如何对每个索引进行求和以及如何检索spesfic索引的值。
for ( Map.Entry<String,Double> entry : m1.entrySet() ) {
List<Double> myList = new ArrayList<Double>();
if ( m2.containsKey(entry.getKey()) ) {
//if the key is common in map1 and map2, compare the values
double y=entry.getValue();
double j[]=m2.get(entry.getKey());
for (int u=0;u<j.length;u++){
myList.add(j[u]);
}
for (int i=0;i<myList.size();i++){
System.out.println(entry.getKey()+" "+myList.get(i)*y);
}
}}
答案 0 :(得分:0)
给定加法的可交换属性,将总和数组保持在循环之外,对于每个匹配的键,将总和数组的当前索引i加到y和j [i]的乘积上。
假设数组的大小为N.然后:
double[] finalSum = new double[N];
for ( Map.Entry<String,Double> entry : m1.entrySet() ) {
if ( m2.containsKey(entry.getKey()) ) {
//if the key is common in map1 and map2, compare the values
double y=entry.getValue();
double j[]=m2.get(entry.getKey());
for (int u=0;u<j.length;u++){
finalSum[u] += y * j[u];
}
}
}