比较两个不同hashasps的值,基于它们在java中的密钥

问题描述:

我有两个不同的hashmaps。现在我需要根据自己的keys.Like到包含HashMap比较,比较两个不同hashasps的值,基于它们在java中的密钥

HashMap1: 
Key: BOF Value: SAPF,754 
Key: BOM Value: SAPM,456 
Key: BOL Value: SAPL,987 


HashMap2: 
Key: LOF Value: YTR,654 
Key: BOL Value: UHG,732 

现在我想在其“关键的是相同的,返回的第二折射率之间的差‘价值’字符串的包含HashMap所有这些条目比较[]

喜欢这里,它应该返回: 重点:BOL值:SAPL,255

(为987-732 = 255)

怎么办呢?

+1

迭代每个映射的Map.entrySet()以查找与该值对应的键。 –

+0

迭代器和循环将帮助你 – VedX

map.keySet()将返回地图中的一组键。然后你必须从这两张地图中获得这个键的价值并找出差异。

Map<String, String[]> mp1 = // 
Map<String, String[]> mp2 = // 
Map<String, List<String>> res = new HashMap<>(); 
for (String key : mp1.keySet()) { 
    int val1 = Integer.valueOf(mp1.get(key)[1]); 
    int val2 = Integer.valueOf(mp2.get(key)[1]); 
    List<String> resVal = new ArrayList<>(); 
    resVal.add(mp1.get(key)[0]); 
    resVal.add(String.valueOf(val1-val2)); 
    res.put(key, resVal); 
} 
return res; 

还有一件事,你有检查存在。否则,您将获得NullPointerException

+0

嗨Emdadul,只是一个问...在这里你只返回相应条目的差异。但我想整个条目 – kalyan

+0

不,mp1.get(键)将返回值(串[])。然后我通过mp1.get(key)[1]从索引1获取值。在这里看到索引。 –

+0

我想说的是在arraylist你加val1-val2吧?像(987-732)= 255 ..所以你加入255.但我想要整个条目,如:键:BOL值:SAPL,255 – kalyan