🎓 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
HashSet is a part of the Java Collections Framework and provides a collection that uses a hash table for storage. It allows for fast insertion, deletion, and lookup of elements. This tutorial will cover all methods of HashSet with examples and outputs, highlighting key points, use cases, best practices, performance considerations, and a real-time example with CRUD operations.Table of Contents
- Introduction
- Key Points
- HashSet Methods
- add()
- addAll()
- remove()
- clear()
- size()
- isEmpty()
- contains()
- iterator()
- toArray()
- Use Cases
- Best Practices
- Performance Considerations
- Real-time Example with CRUD Operations
- Conclusion
1. Introduction
A HashSet in Java is part of the java.util package and implements the Set interface. It uses a hash table for storage, which allows for fast access to its elements. Unlike lists, sets do not allow duplicate elements.
2. Key Points
HashSetdoes not allow duplicate elements.- It provides constant-time performance for basic operations like add, remove, and contains.
- It makes no guarantees regarding the iteration order of the set.
HashSetis not synchronized, but it can be synchronized externally.
3. HashSet Methods
3.1. add()
The add() method is used to insert elements into the HashSet.
Example:
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> names = new HashSet<>();
names.add("Rahul");
names.add("Anjali");
names.add("Priya");
System.out.println(names);
}
}
Output:
[Rahul, Anjali, Priya]
3.2. addAll()
The addAll() method adds all elements of a collection to the HashSet.
Example:
import java.util.HashSet;
import java.util.Arrays;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> names = new HashSet<>();
names.add("Rahul");
names.addAll(Arrays.asList("Anjali", "Priya"));
System.out.println(names);
}
}
Output:
[Rahul, Anjali, Priya]
3.3. remove()
The remove() method removes the specified element from the HashSet.
Example:
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> names = new HashSet<>();
names.add("Rahul");
names.add("Anjali");
names.add("Priya");
names.remove("Anjali");
System.out.println(names);
}
}
Output:
[Rahul, Priya]
3.4. clear()
The clear() method removes all elements from the HashSet.
Example:
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> names = new HashSet<>();
names.add("Rahul");
names.add("Anjali");
names.add("Priya");
names.clear();
System.out.println(names);
}
}
Output:
[]
3.5. size()
The size() method returns the number of elements in the HashSet.
Example:
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> names = new HashSet<>();
names.add("Rahul");
names.add("Anjali");
names.add("Priya");
System.out.println(names.size()); // 3
}
}
Output:
3
3.6. isEmpty()
The isEmpty() method checks if the HashSet is empty.
Example:
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> names = new HashSet<>();
System.out.println(names.isEmpty()); // true
names.add("Rahul");
System.out.println(names.isEmpty()); // false
}
}
Output:
true
false
3.7. contains()
The contains() method checks if the HashSet contains a specified element.
Example:
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> names = new HashSet<>();
names.add("Rahul");
names.add("Anjali");
System.out.println(names.contains("Anjali")); // true
System.out.println(names.contains("Priya")); // false
}
}
Output:
true
false
3.8. iterator()
The iterator() method returns an iterator for the elements in the HashSet.
Example:
import java.util.HashSet;
import java.util.Iterator;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> names = new HashSet<>();
names.add("Rahul");
names.add("Anjali");
names.add("Priya");
Iterator<String> iterator = names.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
Output:
Rahul
Anjali
Priya
3.9. toArray()
The toArray() method converts the HashSet into an array.
Example:
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> names = new HashSet<>();
names.add("Rahul");
names.add("Anjali");
names.add("Priya");
String[] namesArray = names.toArray(new String[0]);
for (String name : namesArray) {
System.out.println(name);
}
}
}
Output:
Rahul
Anjali
Priya
4. Use Cases
- Unique collections:
HashSetis used when you need a collection of unique elements. - Fast lookups: It provides fast access to elements for lookups, insertions, and deletions.
5. Best Practices
- Use generics: Always use generics to ensure type safety.
- Avoid duplicates: Use
HashSetto eliminate duplicates from a collection. - Choose based on use case: Prefer
HashSetwhen you need a collection with unique elements and do not care about the order of elements.
6. Performance Considerations
- Time complexity: Basic operations like add, remove, and contains have a constant-time performance on average.
- Memory usage: Each element in a
HashSetrequires additional memory for storing hash codes and other data. - Iteration order:
HashSetmakes no guarantees regarding the iteration order of the set.
7. Real-time Example with CRUD Operations
Managing a Student Registration System:
Student.java:
public class Student {
private String name;
private int rollNumber;
public Student(String name, int rollNumber) {
this.name = name;
this.rollNumber = rollNumber;
}
public String getName() {
return name;
}
public int getRollNumber() {
return rollNumber;
}
@Override
public String toString() {
return "Student{name='" + name + "', rollNumber=" + rollNumber + "}";
}
@Override
public int hashCode() {
return rollNumber;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Student student = (Student) obj;
return rollNumber == student.rollNumber;
}
}
Main.java:
import java.util.HashSet;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
HashSet<Student> students = new HashSet<>();
// Create
students.add(new Student("Rahul", 1));
students.add(new Student("Anjali", 2));
students.add(new Student("Priya", 3));
// Read
for (Student student : students) {
System.out.println(student);
}
// Update
students.remove(new Student("Anjali", 2));
students.add(new Student("Anjali", 22));
System.out.println("After Update:");
for (Student student : students) {
System.out.println(student);
}
// Delete
students.remove(new Student("Rahul", 1));
System.out.println("After Deletion:");
for (Student student : students) {
System.out.println(student);
}
}
}
Output:
Student{name='Rahul', rollNumber=1}
Student{name='Anjali', rollNumber=2}
Student{name='Priya', rollNumber=3}
After Update:
Student{name='Anjali', rollNumber=22}
Student{name='Priya', rollNumber=3}
Student{name='Rahul', rollNumber=1}
After Deletion:
Student{name='Anjali', rollNumber=22}
Student{name='Priya', rollNumber=3}
8. Conclusion
The HashSet class in Java is a powerful class for managing collections of unique elements. By understanding its methods, use cases, and best practices, you can effectively utilize HashSet in your Java applications. This tutorial covers the essential methods with examples and demonstrates a real-time example with CRUD operations.
Comments
Post a Comment
Leave Comment