![](/img/trans.png)
[英]How do I put in the values (of different data types) from two HashMaps with the same keys into a new third HashMap?
[英]How do I combine two HashMaps in java into one new HashMap with divided values?
我正在尝试结合两个 HashMap 的数据来制作第三个 HashMap。 两者的密钥在第三个 HashMap 上仍然相同。
但是,PeopleAndTotal 和 PeopleAndDivider HashMap 中的值需要除以,以便商可以在第三个 HashMap 旁边与其各自的键一起出现。
(还值得注意的是,前两个地图中的键是相同的。)
以下是前两张地图的内容:
{p1=20, p2=40, p3=9, p4=18, p5=20, p6=40}
{p1=2, p2=2, p3=3, p4=3, p5=4, p6=4}
我需要制作第三个 HashMap 打印出来是这样的:
{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.