Set Implementations (No Duplicates Allowed)

HashSet (Unordered, Fast Access)

import java.util.*;
 
public class HashSetDemo {
    public static void main(String[] args) {
        HashSet<String> set = new HashSet<>();
        set.add("Apple");
        set.add("Banana");
        set.add("Cherry");
        set.add("Apple"); // Duplicate ignored
 
        System.out.println(set);  // Output: [Banana, Apple, Cherry] (Unordered)
    }
}
  • Uses Hashing (O(1) average-time complexity).
  • Unordered storage.

LinkedHashSet (Maintains Insertion Order)

import java.util.*;
 
public class LinkedHashSetDemo {
    public static void main(String[] args) {
        LinkedHashSet<String> set = new LinkedHashSet<>();
        set.add("Apple");
        set.add("Banana");
        set.add("Cherry");
 
        System.out.println(set);  // Output: [Apple, Banana, Cherry] (Maintains order)
    }
}
  • Preserves insertion order.
  • Slightly slower than HashSet.

TreeSet (Sorted Order)

import java.util.*;
 
public class TreeSetDemo {
    public static void main(String[] args) {
        TreeSet<Integer> set = new TreeSet<>();
        set.add(30);
        set.add(10);
        set.add(20);
 
        System.out.println(set);  // Output: [10, 20, 30] (Sorted Order)
    }
}
  • Sorted storage (O(log n)).