Why not allow an external interface to override hashCode/equals for a HashMap?
With a TreeMap it's trivial to bypass the keys' natural ordering using a Comparable. HashMaps however cannot be controlled in this manner. I suspect it would be both easy and useful to design an interface and to retrofit this into HashMap (or a new class)? Something like this, except with better names: interface Hasharator<T> { ...