Your equals() method may be incorrect because you've used the == operator to compare two String objects. The == operator only returns true when the two String objects are the same object; you may want to compare the two String objects to see if they contain the same sequence of characters, in which case you should use equals() to do that.
However in your example you have two A objects, both of which have name = "y". You set those values in lines 43 and 47. So after that, in line 49, when you print the name values of those two A objects you should expect to see "y" and "y", regardless of all of the obfuscation supplied by that map.