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
HashSet
does 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.
HashSet
is 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:
HashSet
is 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
HashSet
to eliminate duplicates from a collection. - Choose based on use case: Prefer
HashSet
when 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
HashSet
requires additional memory for storing hash codes and other data. - Iteration order:
HashSet
makes 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