2017-09-20 69 views
0

我有兩個不同的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

回答

0

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

相關問題