2017-09-20 1 views
0

Ich habe zwei verschiedene hashmaps. Jetzt muss ich die Hashmaps vergleichen auf der Grundlage ihrer keys.Like,Vergleichen von Werten von zwei verschiedenen hashmaps basierend auf ihrem Schlüssel in 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 

Jetzt habe ich alle diese Einträge in den Hashmaps deren ‚Schlüssel des gleichen sind und gibt die Differenz zwischen dem zweiten Index der‚Werte‘String vergleichen wollen []

wie hier sollte es zurück: Key: BOL Wert: SAPL, 255

(als 987-732 = 255)

wie es zu tun?

+1

Iterieren Sie die Map.entrySet() 'jeder Karte, um die Schlüssel zu finden, die dem Wert entsprechen. –

+0

Iteratoren und Schleifen werden Ihnen helfen – VedX

Antwort

0

map.keySet() wird Schlüsselsatz in Karte zurückgeben. Dann müssen Sie mit diesem Schlüssel Wert von beiden Karten erhalten und den Unterschied finden.

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; 

Noch eine Sache, Sie haben auf Existenz zu prüfen. Andernfalls erhalten Sie NullPointerException

+0

Hallo Emdadul, nur eine Sache zu stellen ... hier geben Sie nur den Unterschied der entsprechenden Eintrag zurück. Aber ich möchte den gesamten Eintrag – kalyan

+0

Nein, mp1.get (Schlüssel) wird Wert (Zeichenfolge []). Dann nehme ich Wert von Index 1 durch mp1.get (Schlüssel) [1]. Siehe den Index hier. –

+0

was ich versuche zu sagen, ist in diesem arraylist du val1-val2 richtig hinzufügen? like (987-732) = 255..So fügst du 255 hinzu. Aber ich will den ganzen Eintrag wie: Key: BOL Wert: SAPL, 255 – kalyan

Verwandte Themen