2017-09-20 1 views
0

J'ai deux hashmaps différents. Maintenant, je dois comparer les hashmaps en fonction de leur keys.Like,comparer les valeurs de deux hashmaps différentes en fonction de leur clé dans 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 

Maintenant, je veux comparer toutes les entrées dans les hashmaps dont « de clés sont les mêmes et le retour de la différence entre le second indice de« chaîne de valeurs []

comme ici, il devrait revenir: clé: BOL Valeur: SAPL, 255

(comme 987-732 = 255)

Comment le faire?

+1

itérez le 'Map.entrySet()' de chaque carte pour trouver la clé (s) correspondant à la valeur. –

+0

itérateurs et des boucles vous aidera – VedX

Répondre

0

map.keySet() retournera l'ensemble des clés dans la carte. Ensuite, vous devez obtenir la valeur avec cette clé de la carte et trouver la différence.

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; 

Encore une chose, vous devez vérifier l'existence. Sinon, vous obtiendrez NullPointerException

+0

Salut Emdadul, juste une chose à demander ... ici vous retournez seulement la différence de l'entrée correspondante.Mais je veux l'entrée entière – kalyan

+0

non, mp1.get (clé) va retourner la valeur (Chaîne[]). Ensuite, je prends la valeur de l'index 1 par mp1.get (key) [1]. Voir l'index ici. –

+0

ce que j'essaie de dire est que dans cette liste vous ajoutez val1-val2 droit? comme (987-732) = 255..so vous ajoutez 255. Mais le je veux l'entrée entière comme: Clé: BOL Valeur: SAPL, 255 – kalyan