Junior
What is a LinkedHashSet?
sobes.tech AI
Answer from AI
LinkedHashSet is an implementation of the Set interface that maintains the insertion order of elements. It is a combination of HashSet and LinkedList.
Features:
- Unique elements: Like
HashSet,LinkedHashSetdoes not allow duplicates. - Order preservation: Elements are iterated in the order they were added. This is achieved by using a doubly linked list to link the elements in insertion order.
- Performance: Operations such as adding, removing, and searching for elements generally have a time complexity of O(1). However, iteration over
LinkedHashSetcan be slightly faster than overHashSetbecause it is based on a linked list rather than traversing a hash table. - Null allowance: Permits one element with a
nullvalue.
Example usage:
import java.util.LinkedHashSet;
import java.util.Set;
// Creating a LinkedHashSet
Set<String> linkedHashSet = new LinkedHashSet<>();
// Adding elements
linkedHashSet.add("Apple");
linkedHashSet.add("Banana");
linkedHashSet.add("Orange");
linkedHashSet.add("Banana"); // This element will not be added again
// Printing elements
System.out.println(linkedHashSet); // Outputs: [Apple, Banana, Orange]
// Checking for an element
boolean containsBanana = linkedHashSet.contains("Banana"); // true
// Removing an element
linkedHashSet.remove("Apple");
// Printing elements after removal
System.out.println(linkedHashSet); // Outputs: [Banana, Orange]
// Iterating over elements (in insertion order)
for (String fruit : linkedHashSet) {
System.out.println(fruit);
}
Difference from HashSet:
| Feature | HashSet |
LinkedHashSet |
|---|---|---|
| Element order | Not guaranteed (depends on hash code) | Preserves insertion order |
| Internal structure | Hash table | Hash table + doubly linked list |
| Iteration | Unpredictable order | In insertion order |
| Performance | Average O(1) for main operations | Average O(1) for main operations, iteration is faster |
LinkedHashSet is useful when you need a collection of unique elements that also preserves the order of insertion.