A HashMap allows the mapping of one key to one value. You need one key and two values. Hm... the values are related somehow. Maybe you just could join them together to form some new object type? The class of this type could be the value type for your HashMap.
Hauke's suggestion is the best solution for your question as it was asked, but perhaps you would like to elaborate on the real-world situation that you are modeling here. Specifically, if each String "AB" "CD" etc. is only ever associated with one and the same Double value, you could use two maps: one of which maps the Integer to the String and the second maps the String to the Double.
If however each String may be associated with differing Double values you would create a class with two fields as suggested by Hauke, but in that case I would have to wonder why you would want to use the Double wrapper class and not a double primitive.
There are no new questions, but there may be new answers.
As a side note, you should stop using "new" when creating instances of primitive wrapper classes. These days all these classes have a valueOf method that will wrap a primitive in a matching wrapper instance. The advantage of using this method is that if there's some form of caching available it will use that cache, and possibly return an existing object instead of creating a new one each time. So replace "new Double(2)" with "Double.valueOf(2)".
Currently, Float and Double are the only classes without a cache. Boolean has a "cache" for both its values in Boolean.TRUE and Boolean.FALSE. Byte, Short and Long have a cache for values from -128 to 127. Integer has the same range by default but the upper bound can be modified using a system property. Character has a cache for values from 0 to 127.