簡體   English   中英

如何將 java 中的兩個 HashMap 組合成一個新的 HashMap 並具有除值?

[英]How do I combine two HashMaps in java into one new HashMap with divided values?

我正在嘗試結合兩個 HashMap 的數據來制作第三個 HashMap。 兩者的密鑰在第三個 HashMap 上仍然相同。

但是,PeopleAndTotal 和 PeopleAndDivider HashMap 中的值需要除以,以便商可以在第三個 HashMap 旁邊與其各自的鍵一起出現。

(還值得注意的是,前兩個地圖中的鍵是相同的。)

以下是前兩張地圖的內容:

  1. PeopleAndTotal: {p1=20, p2=40, p3=9, p4=18, p5=20, p6=40}
  2. PeopleAndDivider: {p1=2, p2=2, p3=3, p4=3, p5=4, p6=4}

我需要制作第三個 HashMap 打印出來是這樣的:

  1. 組合映射: {p1=10, p2=20, p3=3, p4=6, p5=5, p6=10}

到目前為止,代碼如下所示:

import java.util.HashMap;

public class HashmapTest2 {

    public static void main(String[] args) {

        HashMap<String, Integer> PeopleAndTotal = new HashMap<String, Integer>();
        HashMap<String, Integer> PeopleAndDivider = new HashMap<String, Integer>();

        PeopleAndTotal.put("p1", 20);
        PeopleAndTotal.put("p2", 40);
        PeopleAndTotal.put("p3", 9);
        PeopleAndTotal.put("p4", 18);
        PeopleAndTotal.put("p5", 20);
        PeopleAndTotal.put("p6", 40);

        PeopleAndDivider.put("p1", 2);
        PeopleAndDivider.put("p2", 2);
        PeopleAndDivider.put("p3", 3);
        PeopleAndDivider.put("p4", 3);
        PeopleAndDivider.put("p5", 4);
        PeopleAndDivider.put("p6", 4);

        System.out.println(PeopleAndTotal);
        System.out.println(PeopleAndDivider);

        HashMap<String, Integer> CombineMap = new HashMap<String, Integer>();

        //Insert method here, How would I go about this?

        System.out.println("Expected Output for CombineMap should be");
        System.out.println("{p1=10, p2=20, p3=3, p4=6, p5=5, p6=10}");

        System.out.println(CombineMap);
    }
}

go 關於這個的最佳方法是什么?

您必須遍歷 PeopleAndTotal 並訪問另一個 map PeopleAndDivider 才能獲得相同鍵的分隔符值。 然后將結果划分並放在同一key下的CombineMap中。

for (Map.Entry<String, Integer> entry : PeopleAndTotal.entrySet()) {
    Integer total = entry.getValue();
    Integer divider = PeopleAndDivider.get(entry.getKey());
    CombineMap.put(entry.getKey(), total / divider)
}

這是一個襯里:

Map<String, Integer> CombineMap = PeopleAndTotal.entrySet().stream()
  .collect(toMap(Map.Entry::getKey, e -> e.getValue() / PeopleAndDivider.get(e.getKey())));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM