In Java, the Set interface is part of the Collections Framework and is used to store a collection of unique elements. Unlike List, a Set does not allow duplicate values and does not support accessing elements by index.
There are three commonly used implementations of Set:
- HashSet → Stores unique elements, does not guarantee order.
- LinkedHashSet → Stores unique elements while maintaining insertion order.
- TreeSet → Stores unique elements in sorted order (ascending by default).
Comparison Table
Feature | HashSet | LinkedHashSet | TreeSet |
---|---|---|---|
Order | No order | Maintains insertion order | Maintains sorted order |
Duplicates | Not allowed | Not allowed | Not allowed |
Null values | Allows 1 null | Allows 1 null | Not allowed |
Underlying DS | Hash table (HashMap) | Hash table + Linked list | Red-Black Tree |
Performance | O(1) add/search/remove | O(1) add/search/remove | O(log n) add/search/remove |
Use case | When order is not needed | When insertion order needed | When sorted data is needed |
Example
Let’s look at a practical example using HashSet, LinkedHashSet, and TreeSet.
package collectiondemo; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.TreeSet; public class SetDemo { public static void main(String[] args) { // HashSet -> unique elements, no order HashSet h1 = new HashSet(); h1.add(5); h1.add(2); h1.add(6); h1.add(2); h1.add("hii"); System.out.println("HashSet: " + h1); // LinkedHashSet -> unique elements, insertion order LinkedHashSet h2 = new LinkedHashSet(); h2.add(5); h2.add(2); h2.add(6); h2.add(2); h2.add("hii"); System.out.println("LinkedHashSet: " + h2); // TreeSet -> unique elements, sorted order TreeSet h3 = new TreeSet(); h3.add(5); h3.add(2); h3.add(6); h3.add(2); System.out.println("TreeSet: " + h3); // Iteration using for-each System.out.println("\nIterating HashSet using for-each:"); for (Object obj : h1) { System.out.println(obj); } // Iteration using Iterator System.out.println("\nIterating HashSet using Iterator:"); Iterator it = h1.iterator(); while (it.hasNext()) { System.out.println(it.next()); } } }
Output Example
HashSet: [2, 5, 6, hii] LinkedHashSet: [5, 2, 6, hii] TreeSet: [2, 5, 6] Iterating HashSet using for-each: 2 5 6 hii Iterating HashSet using Iterator: 2 5 6 hii
Key Takeaways
- Use HashSet when you only need unique elements and don’t care about order.
- Use LinkedHashSet when you need unique elements and want to preserve insertion order.
- Use TreeSet when you need unique elements in sorted order.
- Iteration can be done using for-each or Iterator.
Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.