Initialization Patterns
Basic Initialization Methods
Empty HashSet Creation
HashSet<String> emptySet = new HashSet<>();
Initialization with Initial Capacity
HashSet<Integer> numbersSet = new HashSet<>(16);
Initialization with Initial Capacity and Load Factor
HashSet<String> customSet = new HashSet<>(16, 0.75f);
Collection-Based Initialization
From Another Collection
List<String> originalList = Arrays.asList("Java", "Python", "C++");
HashSet<String> programmingLanguages = new HashSet<>(originalList);
Using Arrays.asList()
HashSet<String> citiesSet = new HashSet<>(Arrays.asList("New York", "London", "Tokyo"));
Advanced Initialization Techniques
Double Brace Initialization (Not Recommended)
HashSet<String> countriesSet = new HashSet<String>() {{
add("USA");
add("Canada");
add("Mexico");
}};
Java 9+ Factory Methods
HashSet<String> fruitsSet = new HashSet<>(Set.of("Apple", "Banana", "Orange"));
Method |
Performance |
Memory Efficiency |
Default Constructor |
Low |
Moderate |
Capacity-Specified |
High |
Good |
Collection-Based |
Moderate |
Depends on Source |
Initialization Flow
graph TD
A[HashSet Initialization] --> B{Initialization Method}
B --> |Empty| C[new HashSet<>()]
B --> |Capacity| D[new HashSet<>(initialCapacity)]
B --> |Collection| E[new HashSet<>(existingCollection)]
Best Practices
- Choose appropriate initialization method
- Specify initial capacity for known element count
- Avoid unnecessary resizing
- Use appropriate load factor
LabEx Learning Tips
When practicing HashSet initialization in LabEx, experiment with different initialization techniques to understand their nuances and performance implications.