Java HashSet clone() Method

📘 Premium Read: Access my best content on Medium member-only articles — deep dives into Java, Spring Boot, Microservices, backend architecture, interview preparation, career advice, and industry-standard best practices.

🎓 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 (176K+ subscribers): Java Guides on YouTube

▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube

The HashSet.clone() method in Java is used to create a shallow copy of a HashSet. This guide will cover the method's usage, explain how it works, and provide examples to demonstrate its functionality.

Table of Contents

  1. Introduction
  2. clone Method Syntax
  3. Examples
    • Basic Example
    • Real-World Use Case: Cloning a Set of Usernames
  4. Conclusion

Introduction

The HashSet class in Java is part of the Java Collections Framework and implements the Set interface. A HashSet is used to store unique elements. The clone method is used to create a shallow copy of the HashSet, meaning that the structure of the set is duplicated, but the elements themselves are not cloned (only their references are copied).

clone() Method Syntax

The syntax for the clone method is as follows:

public Object clone() 
  • The method does not take any parameters.
  • The method returns a shallow copy of the HashSet.

Examples

Basic Example

In this example, we'll use the clone method to create a shallow copy of a HashSet.

Example

import java.util.HashSet; public class HashSetCloneExample { public static void main(String[] args) { // Creating a HashSet of Strings HashSet<String> originalSet = new HashSet<>(); originalSet.add("Java"); originalSet.add("Python"); originalSet.add("C"); originalSet.add("JavaScript"); // Cloning the HashSet HashSet<String> clonedSet = (HashSet<String>) originalSet.clone(); // Printing the original and cloned HashSets System.out.println("Original HashSet: " + originalSet); System.out.println("Cloned HashSet: " + clonedSet); } } 

Output:

Original HashSet: [Java, JavaScript, Python, C] Cloned HashSet: [Java, JavaScript, Python, C] 

Real-World Use Case: Cloning a Set of Usernames

In a web application, you might want to clone a set of usernames to work with a copy while preserving the original set intact.

Example

import java.util.HashSet; public class CloneUsernames { public static void main(String[] args) { // Creating a HashSet of usernames HashSet<String> usernames = new HashSet<>(); usernames.add("john_doe"); usernames.add("jane_smith"); usernames.add("alice_jones"); // Cloning the HashSet HashSet<String> clonedUsernames = (HashSet<String>) usernames.clone(); // Modifying the cloned set clonedUsernames.add("new_user"); // Printing the original and cloned HashSets System.out.println("Original Usernames: " + usernames); System.out.println("Cloned Usernames (after modification): " + clonedUsernames); } } 

Output:

Original Usernames: [john_doe, jane_smith, alice_jones] Cloned Usernames (after modification): [john_doe, new_user, jane_smith, alice_jones] 

Handling Custom Objects

When working with custom objects, remember that clone creates a shallow copy. This means that if your HashSet contains mutable objects, changes to these objects in the cloned set will reflect in the original set as well.

Example

import java.util.HashSet; class User { String username; User(String username) { this.username = username; } @Override public String toString() { return username; } } public class HashSetCloneCustomObjects { public static void main(String[] args) { // Creating a HashSet of User objects HashSet<User> users = new HashSet<>(); users.add(new User("john_doe")); users.add(new User("jane_smith")); // Cloning the HashSet HashSet<User> clonedUsers = (HashSet<User>) users.clone(); // Modifying an object in the cloned set for (User user : clonedUsers) { if (user.username.equals("john_doe")) { user.username = "john_doe_updated"; } } // Printing the original and cloned HashSets System.out.println("Original Users: " + users); System.out.println("Cloned Users: " + clonedUsers); } } 

Output:

Original Users: [john_doe_updated, jane_smith] Cloned Users: [john_doe_updated, jane_smith] 

Conclusion

The HashSet.clone() method in Java provides a way to create a shallow copy of a HashSet. This method is useful when you need a duplicate of the set to work with while preserving the original set intact. However, it is important to understand that this method creates a shallow copy, meaning that the elements themselves are not cloned. Changes to mutable elements in the cloned set will reflect in the original set. By understanding how to use this method, you can effectively manage collections in your Java applications.

Comments

Spring Boot 3 Paid Course Published for Free
on my Java Guides YouTube Channel

Subscribe to my YouTube Channel (165K+ subscribers):
Java Guides Channel

Top 10 My Udemy Courses with Huge Discount:
Udemy Courses - Ramesh Fadatare