In the Java programming language, every class must provide a hashCode() method which digests the data stored in an instance of the class into a single hash value (a32-bit signed integer). This hash is used by other code when storing or manipulating the instance - the values are intended to be evenly distributed for varied inputs in order to use in clustering