The answer is that HashMap uses the integer returned from calling a method Object.hashCode(). hashCode of an Integer(1) is always 1. By the definition HashMap cannot have duplicate keys, it replaces the value with the duplicate key with the new one; and returns either null if no previous value has been mapped with this key or the previous value that was mapped with this key.
Also, to print out the result, the program uses System.out.println where it.next() gives an object of DoorKeys. To print out, this object is implicitly converted to String using toString() and since toString() method is overriden here to print out the result between "[" and "]", the value is printed out as . Had the toString() method not been overriden, the result would have been plain vanilla 2. [ February 26, 2006: Message edited by: Ruchir Ghildiyal ]