HashMap or HashSet. A HashMap operates more effectively the "better" the distribution of hashes.Contract:
1. If two objects are equal according to the
equals method, hey must have the same hashCode (the reverse is not necessarily true - collisions are allowed!).2.
equals must define an equivalence relation3. Nothing can be
equals(null)4.
equals and hashCode must consistently return the same values for the same object on each invocation, even if the object's state has changed. This makes implementations for mutable objects particularly challenging.By default,
equals compares using ==. The situation with the default hashCode is more interesting: it depends on the JVM implementation and may be unexpected. For example, in OpenJDK 7, it is a random number.Detailed instructions for overriding these methods are described in "Effective Java" Item 9 (more details about the magic number 31 here).