by BehindJava
What are Hash Tables in Data Structures
In this blog, we are going to learn about HashTables in detail.
Hash Tables
- It is an abstract data type.
- Provide access to data using keys.
- Key doesn’t have to be an integer.
- Consists of Key and value pairs and data types can be different.
- It’s easy to retrieve when you know the key.
- Associative array is one type of hash table.
Hashing
- Maps the key of any data type to an integer.
- Hash function maps keys to int.
- In Java, hash function is Object.hashCode()
- Hash Collision occurs when more than one value has the same hashed value or hash code.
Load Factor
- Load factor tells us how full the array is for example let’s say an array contains 5 user details backed by a hash table. It’s load factor would be 0.5.
- Load factor is calculated by using Load Factor = Hash code of items / Capacity = Size / Capacity.
- Load factor is used to decide when to resize the array backing the hash table.
- There is lots of empty space when load factor is too low.
- There will be high chances of hash collisions if load factor is too high.
- Can play a role in determining the time complexity for the retrieval.
Adding an element to a Hash Table backed by an Array
- Provide a Key/Value pair.
- Use a hash function to hash the key to an int value.
- Store the value at the hashed key value - this is the index into the array.
Retrieving a value from a hash table
- Provide the key.
- Use the same hash function to hash the key to an int value.
- Retrieve the value stored at the hashed key value.
Syntax:
public class BehindJava {
public static void main(String[] args) {
Hashtable<Integer, String> map = new Hashtable<Integer, String>();
map.put(1001, "Behind");
map.put(1002, "Java");
map.put(1003, "DataStructures");
map.put(1004, "SpringBoot");
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
}
}
Output:
1004 SpringBoot
1003 DataStructures
1002 Java
1001 Behind