Java AbstractSet hashCode() Method (original) (raw)
Last Updated : 05 Feb, 2025
The **hashCode() method in AbstractSet (and its subclasses like HashSet) computes a hash code based on the elements of the set. It ensures that if two sets contain the same elements, their hash codes will be the same, provided the elements themselves return consistent hash codes.
**Working of Hash Code:
- The hashCode() of a set is computed as the sum of hash codes of all elements in the set.
- The order of elements does not affect the hash code.
- If two sets contain the same elements, their hash codes will be identical (as long as the elements' hash codes remain consistent).
- A HashSet relies on both hashCode() and equals() to check for duplicate elements.
**Example 1: This example demonstrates how to create a HashSet, add elements to it, and display its hash code.
Java `
// Java program to display the hashcode of a set import java.util.HashSet; import java.util.Set;
public class Geeks {
public static void main(String[] args)
{
// Create three Set
Set<Integer> s1 = new HashSet<>();
s1.add(1);
s1.add(2);
s1.add(3);
System.out.println("Set1: " + s1);
// Displaying hash code
System.out.println("Hash code of set1: "
+ s1.hashCode());
}
}
`
Output
Set1: [1, 2, 3] Hash code of set1: 6
**Explanation: AbstractSet sums the hash codes of its elements:
hashCode = 1.hashCode() + 2.hashCode() + 3.hashCode()
= 1 + 2 + 3
= 6
Syntax of hashCode() Method
public int hashCode()
- **Parameter: This method does not take any parameter
- **Return Type: This method returns an integer value that represents the hash code of the object.
**Example 2: This example demonstrates how hashCode and equals() work together to compare custom objects correctly and ensure they have same hash codes based on their properties.
Java `
// Java program to demonstrates how hascode() works with // custom objects
import java.util.HashSet; import java.util.Objects;
class Person { String name; int age;
Person(String name, int age)
{
this.name = name;
this.age = age;
}
// Override hashCode()
@Override public int hashCode()
{
// Generates a hash code based on name and age
return Objects.hash(name, age);
}
// Override equals() to ensure consistency
@Override public boolean equals(Object o)
{
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
Person person = (Person)o;
return age == person.age
&& Objects.equals(name, person.name);
}
}
public class HashCodeDemo { public static void main(String[] args) { Person p1 = new Person("Alice", 30); Person p2 = new Person("Alice", 30); Person p3 = new Person("Bob", 25);
// Print hash codes
System.out.println("Hash code of p1: "
+ p1.hashCode());
System.out.println("Hash code of p2: "
+ p2.hashCode());
System.out.println("Hash code of p3: "
+ p3.hashCode());
// Check equality
System.out.println("p1 equals p2: "
+ p1.equals(p2));
System.out.println("p1 equals p3: "
+ p1.equals(p3));
}
}
`
Output
Hash code of p1: 1963862399 Hash code of p2: 1963862399 Hash code of p3: 2076901 p1 equals p2: true p1 equals p3: false