比较两个 TreeMap

Compare two TreeMap

我有两个 TreeMap

第一张地图是:

Map<String, Double> m1 = new TreeMap();

第二个是:

Map<String,double []> m2 = new TreeMap();

我想在第一个映射中搜索到第二个映射中的键,然后将第一个映射的值乘以第二个映射值列表(对于相似的键)。 之后我将从乘法中得到一个双精度类型的数组,然后我想对每个独立索引的值求和。

例如:

地图 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}

这是我的尝试,我在两个矩阵之间进行搜索,然后进行乘法。

***我的问题是如何对每个索引进行求和以及如何检索特定索引的值。

    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);
                 }
               }}

给定加法的交换属性,将总和数组保持在循环之外,并且对于每个匹配的键,将总和数组的当前索引 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];
         }
     }
}