Hashing in JAVA

Alexandru Nastase
5 min readSep 12, 2022

--

What is hashing?

#hashing

Hashing is a technique used to store and retrieve data from a key-value store. A hash function is used to calculate a unique key for each piece of data, which can then be used to lookup the data in the store.

Hash functions are designed to be fast, so that data can be quickly accessed. They are also designed to be collision resistant, so that two different pieces of data do not have the same key.

Hashing In Java

Java hashing is a technique used for mapping values to the key, which makes it easy to retrieve values by just entering the key. The main advantage of using HASHING in Java is that it reduces the time complexity of any program and allows the execution time of essential operations to remain constant even for the more significant side given.

In Java, a hash code is an integer value that is linked with each object. Hashing is used in many different places, such as in HashTables and HashMaps. It is also used in some security algorithms, such as message authentication codes (MACs).

The Java hashCode() Method

Simply put, hashCode() returns an integer value, generated by a hashing algorithm.

Objects that are equal (according to their equals()) must return the same hash code. Different objects do not need to return different hash codes.

The general contract of hashCode() states:

• Whenever it is invoked on the same object more than once during an execution of a Java application, hashCode() must consistently return the same value, provided no information used in equals comparisons on the object is modified. This value doesn’t need to stay consistent from one execution of an application to another execution of the same application.

• If two objects are equal according to the equals(Object) method, calling the hashCode() method on each of the two objects must produce the same value.

• If two objects are unequal according to the equals(java.lang.Object) method, calling the hashCode method on each of the two objects doesn’t need to produce distinct integer results. However, developers should be aware that producing distinct integer results for unequal objects improves the performance of hash tables.

equals() related to hashcode()

Methods for Implementing hashing in Java

There are many ways to implement hashing in Java. The most common way is to use the HashMap class, which provides a mapping from keys to values. The HashMap class uses the hashCode() method to calculate the hash value for each key, and then uses the equals() method to compare keys. If the two keys are equal, then the corresponding values are also considered equal.

HashTable is also a common way to implement hashing.

Another way to implement hashing is to use the HashSet class, which provides a set of elements that are all considered equal. The HashSet class uses the hashCode() method to calculate the hash value for each element, and then uses the equals() method to compare elements.

Yet another way to implement hashing is by using your own custom classes. You can create a custom class that implements the Hashable interface, which contains methods for calculating hash values and comparing keys. When you add an instance of your custom class to a HashMap or HashSet, the hashCode() and equals() methods will be used to determine whether or not it is already in the collection.

There are many other ways to implement hashing in Java, but these are some of the most common.

Some code examples of implementations

1. HashTable-based Method (A synchronised implementation of hashing)

HashTable implementation

output:

2. HashMap-based Method (A non-synchronized faster implementation of hashing)

HashMap implementation

output:

3. LinkedHashMap-based method(Similar to HashMap, but keeps order of elements)

LinkedHashMap implementation

output:

output

4. ConcurretHashMap-based Method (Similar to HashTable, Synchronized, but faster as multiple locks are used)

ConcurretHashMap implementation

output:

output

Code snippets from Javapoint

Conclusion

Hashing is an important technique in java that helps improve the performance of certain operations. When data is stored in a hash table, it can be accessed quickly and efficiently. Hash tables are typically used to store large amounts of data, such as databases or caches.

When used correctly, hashing can provide a significant performance boost. In addition, hashing can help to prevent data corruption and ensure that data is properly distributed among servers.

Overall, hashing is a critical aspect of java development that should not be overlooked.

--

--

Alexandru Nastase

Java guy. Life newbie. Maybe smart maybe funny. Personal stuff here, too. WELCOME ! ❤