0

キーが整数で値が double の 2 つのマップがあります。

キーでソートされた3番目のマップを作成したいのですが、値は両方のマップからのdoubleのリストになります。

マップ1:

1, 90.00
5, 75.45
8, 76.50

マップ2:

4, 12.00
5, 322.09
8, 11.09
9, 21.00

最終マップ:

1, (90.00,0.00)
5, (75.45,322.09)
8, (76.50,11.09)
9, (0.00, 21.00)

上記から明らかなように、一方のマップのキーが他方のマップで欠落している場合、他方のマップの最終マップの値はデフォルトで 0.00 に設定する必要があります。

Map firstMap = new HashMap<Integer, Double>();
Map secondMap = new HashMap<Integer, Double>();

Map finalMap = new HashMap<Integer, List<Double>>();

firstMap.put(1, 90.00);
firstMap.put(5, 75.45);
firstMap.put(8, 76.50);

secondMap.put(4, 12.00);
secondMap.put(5, 322.09);
secondMap.put(8, 11.09);
secondMap.put(9, 21.00);

putAll メソッドを使用して、すべてのキーを 3 番目のマップに配置できます。しかし、私が望むように値を入れる方法は?

読んでくれてありがとう!

4

2 に答える 2

0

次のコードは、要求された操作を実行します

List<Map<Integer, Double>> originals = getOriginalLists();

Map<Integer, List<Double>> result = new HashMap<Integer, List<Double>>();
for (Map<Integer, Double> original : originals) {
    for (Map.Entry<Integer, Double> entry : original.entrySet()) {
        if (!result.containsKey(entry.getKey())) {
            result.put(entry.getKey(), new ArrayList<Double>());
        }
        result.get(entry.getKey()).add(entry.getValue());
    }
}

これはマップのリストで機能するため、ソリューションは 2 つのマップに制限されません。

于 2012-07-18T06:31:28.283 に答える