Hami
Hami

Reputation: 111

How can I compare two hashmaps to see if the keys are equal?

I have two hashmaps let's say hashmap1 and hashmap2 so that hashmap2 contains common keys with hashmap1. So, I want to check that if the keys are common or equal in both hashmaps, then I multiply the values of hashmap2 by 2 in each iteration.

My code is as follows but it gives me zero. Actually, I want to practice the operation otherwise I can easily multiply the values of hashmap2 without comparing with hashmap1.

double mult=2;
        for(String s:hashmap1.keySet()) {


            if(hashmap1.keySet()==hashmap2.keySet()) {

                mult= mult * hashmap1.get(s);
            }else {
                continue;
                }

            }

        System.out.println("The new values for hashmap2: " + mult);

Moreover, the keys for hashmaps are String

Upvotes: 2

Views: 544

Answers (3)

P Mittal
P Mittal

Reputation: 172

You can use the following code for this

    public class Main {
        public static void main(String[] args) {
            Map map1 = new HashMap<String, Integer>();
            map1.put("a", 1);
            map1.put("b", 2);
            Map map2 = new HashMap<String, Integer>();
            map2.put("a", 1);
            map2.put("b", 3);
            map2.put("c", 3);
            System.out.println(map1.keySet().equals(map2.keySet()));
            if (map1.keySet().equals(map2.keySet())) {
                Iterator<Map.Entry<String, Integer>> iterator = map2.entrySet().iterator();
                while (iterator.hasNext()) {
                    Map.Entry<String, Integer> entry = iterator.next();
                    map2.put(entry.getKey(), entry.getValue() * 2);
                }
            }
        }
    }

Upvotes: 2

vigneshwaran m
vigneshwaran m

Reputation: 376

Hope the below code resolve your issue

Map<String, Integer> hashMap1 = new HashMap<>();
    hashMap1.put("A", 2);
    hashMap1.put("B", 3);

    Map<String, Integer> hashMap2 = new HashMap<>();
    hashMap2.put("A", 2);
    hashMap2.put("B", 3);
    hashMap2.put("C", 4);

    for (Entry<String, Integer> entryHashMap2 : hashMap2.entrySet()) {
        if (hashMap1.containsKey(entryHashMap2.getKey())) {
        System.out.println(entryHashMap2.getValue() * 2);
        hashMap2.put(entryHashMap2.getKey(), (entryHashMap2.getValue() * 2));
        }
    }

Upvotes: 2

yevgeniy.batulin
yevgeniy.batulin

Reputation: 186

First of all, you initialize mult with zero, so every time you multiply by zero, you get zero.

Regarding your question, you should do hashmap1.keySet().equals(hashmap2.keySet()) to check if two sets are equal.

Upvotes: 2

Related Questions