🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (178K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
The Object.hashCode() method in Java is used to return a hash code value for the object.
Table of Contents
- Introduction
hashCode()Method Syntax- Examples
- Default
hashCode() - Overriding
hashCode() - Consistent
hashCode()andequals()
- Default
- Real-World Use Case
- Conclusion
Introduction
The Object.hashCode() method is a member of the Object class in Java. It returns an integer value that represents the hash code of the object. This hash code is used primarily in hashing-based collections like HashMap, HashSet, and Hashtable to determine the bucket location for storing objects. By default, the hashCode() method returns an integer derived from the object's memory address. However, it can be overridden to provide a custom hash code based on the object's state.
hashCode()() Method Syntax
The syntax for the hashCode() method is as follows:
public int hashCode()
The method returns an integer that represents the hash code value of the object.
Examples
Default hashCode()
By default, the hashCode() method in the Object class returns an integer based on the memory address of the object.
Example
public class HashCodeExample {
public static void main(String[] args) {
Object obj1 = new Object();
Object obj2 = new Object();
System.out.println("obj1.hashCode(): " + obj1.hashCode());
System.out.println("obj2.hashCode(): " + obj2.hashCode());
}
}
Output:
obj1.hashCode(): 12345678
obj2.hashCode(): 87654321
Overriding hashCode()
To provide a meaningful hash code for a custom class, you can override the hashCode() method. A good implementation of hashCode() ensures that equal objects have the same hash code.
Example
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int hashCode() {
return name.hashCode() + age;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return age == person.age && name.equals(person.name);
}
}
public class CustomHashCodeExample {
public static void main(String[] args) {
Person person1 = new Person("Ramesh", 30);
Person person2 = new Person("Ramesh", 30);
System.out.println("person1.hashCode(): " + person1.hashCode());
System.out.println("person2.hashCode(): " + person2.hashCode());
System.out.println("person1.equals(person2): " + person1.equals(person2));
}
}
Output:
person1.hashCode(): 79027230
person2.hashCode(): 79027230
person1.equals(person2): true
Consistent hashCode() and equals()
When overriding the hashCode() method, it is important to ensure that objects that are considered equal (according to the equals() method) have the same hash code.
Example
class Product {
String name;
double price;
Product(String name, double price) {
this.name = name;
this.price = price;
}
@Override
public int hashCode() {
return Objects.hash(name, price);
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Product product = (Product) obj;
return Double.compare(product.price, price) == 0 && name.equals(product.name);
}
}
public class ConsistentHashCodeExample {
public static void main(String[] args) {
Product product1 = new Product("Laptop", 800.0);
Product product2 = new Product("Laptop", 800.0);
System.out.println("product1.hashCode(): " + product1.hashCode());
System.out.println("product2.hashCode(): " + product2.hashCode());
System.out.println("product1.equals(product2): " + product1.equals(product2));
}
}
Output:
product1.hashCode(): 12345678
product2.hashCode(): 12345678
product1.equals(product2): true
Real-World Use Case
Using hashCode() in Hash-Based Collections
In real-world applications, the hashCode() method is often used in hash-based collections like HashMap and HashSet to determine the location of objects.
Example
import java.util.HashMap;
class User {
String username;
String email;
User(String username, String email) {
this.username = username;
this.email = email;
}
@Override
public int hashCode() {
return Objects.hash(username, email);
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
User user = (User) obj;
return username.equals(user.username) && email.equals(user.email);
}
}
public class HashMapHashCodeExample {
public static void main(String[] args) {
HashMap<User, String> userRoles = new HashMap<>();
User user1 = new User("ramesh123", "ramesh@example.com");
User user2 = new User("suresh456", "suresh@example.com");
userRoles.put(user1, "Admin");
userRoles.put(user2, "User");
User searchUser = new User("ramesh123", "ramesh@example.com");
System.out.println("Role of searchUser: " + userRoles.get(searchUser));
}
}
Output:
Role of searchUser: Admin
Conclusion
The Object.hashCode() method in Java is a fundamental method for generating hash codes for objects. By understanding how to use and override this method, you can ensure that your objects work correctly with hash-based collections and other hashing mechanisms. Whether you are performing default hash code generation, overriding the method for custom hash codes, ensuring consistency with equals(), or using it in real-world scenarios, the hashCode() method provides a reliable way to generate and use hash codes in Java applications.
My Top and Bestseller Udemy Courses. The sale is going on with a 70 - 80% discount. The discount coupon has been added to each course below:
Build REST APIs with Spring Boot 4, Spring Security 7, and JWT
[NEW] Learn Apache Maven with IntelliJ IDEA and Java 25
ChatGPT + Generative AI + Prompt Engineering for Beginners
Spring 7 and Spring Boot 4 for Beginners (Includes 8 Projects)
Available in Udemy for Business
Building Real-Time REST APIs with Spring Boot - Blog App
Available in Udemy for Business
Building Microservices with Spring Boot and Spring Cloud
Available in Udemy for Business
Java Full-Stack Developer Course with Spring Boot and React JS
Available in Udemy for Business
Build 5 Spring Boot Projects with Java: Line-by-Line Coding
Testing Spring Boot Application with JUnit and Mockito
Available in Udemy for Business
Spring Boot Thymeleaf Real-Time Web Application - Blog App
Available in Udemy for Business
Master Spring Data JPA with Hibernate
Available in Udemy for Business
Spring Boot + Apache Kafka Course - The Practical Guide
Available in Udemy for Business
Comments
Post a Comment
Leave Comment