I'm trying to check whether 2 HashMaps are equal using a custom function match
. I expect the output to be true
, but the program outputs false
. Here is the code snippet.
import java.util.HashMap;
public class HashMapEquals{
private static boolean matches1(HashMap<Character, Integer> one, HashMap<Character, Integer> two){
for(char c: one.keySet()){
if(one.get(c) != two.get(c))
return false;
}
return true;
}
private static boolean matches2(HashMap<Character, Integer> one, HashMap<Character, Integer> two){
for(char c: two.keySet()){
if(two.get(c) != one.get(c))
return false;
}
return true;
}
private static boolean matches(HashMap<Character, Integer> one, HashMap<Character, Integer> two){
boolean first = matches1(one, two);
boolean second = matches2(one, two);
System.out.println(first);
System.out.println(second);
return (first && second);
}
public static void main(String args[]){
HashMap<Character, Integer> one = new HashMap<>();
HashMap<Character, Integer> two = new HashMap<>();
one.put('a', 10000);
two.put('a', 10000);
matches(one, two);
System.out.println(one.equals(two));
}
}
The output is
$ java HashMapEquals
false
false
true
I know we can check the same functionality using the inbuilt function of hashmap one.equals(two)
which is working as expected. But, I am just curious to know what is wrong with the custom function matches
in the above code snippet.