Java Notes
Learn Java LinkedHashSet from scratch — what insertion-order uniqueness means, how LinkedHashSet works internally, when to prefer it over HashSet or TreeSet, with full explanations.
Socho tum ek playlist bana rahe ho — koi bhi song dobara nahi aana chahiye, aur songs wahi order mein chahiye jis order mein tumne add kiye. Na alphabetical order, na random — exactly wahi insertion order.
HashSet use karo to unique toh milenge, but order random hoga. TreeSet use karo to unique milenge, par order alphabetical/sorted hoga. LinkedHashSet use karo to unique milenge, aur exact insertion order bhi milega.
LinkedHashSet kaise kaam karta hai?
Internally LinkedHashSet ke paas do cheezein hain:
- HashMap (HashSet ki tarah) — fast O(1) lookup aur duplicate detection ke liye
- Doubly Linked List — jo insertion order maintain karta hai
Jab bhi tum koi element add karte ho:
- HashMap check karta hai — duplicate hai ya nahi (O(1) mein)
- Agar duplicate nahi — Linked List mein end mein add karo (order yaad rakho)
Yahi combination deta hai: fast lookup + order memory.
Basic Usage — Insertion Order Yaad Rahti Hai
Try it in WoHoCode
Edit the program, then run it here.
Run this example to see its output.
Har line ka matlab:
playlist.add("Kesariya")doosri baar —add()falsereturn karta hai, set unchanged rehta hai. Koi error nahi.playlist.size()— 4 hai, 6 nahi. Sirf unique elements count hote hain.- Remove ke baad bhi baaki elements ka order same rehta hai — linked list ki wajah se.
HashSet se compare karo:
Try it in WoHoCode
Edit the program, then run it here.
Run this example to see its output.
HashSet ka output run karne par har baar change ho sakta hai. LinkedHashSet ka output hamesha same rahega.
Sabse Common Use Case: List Se Duplicates Hatao, Order Bachao
Ye LinkedHashSet ka sabse popular use case hai:
Try it in WoHoCode
Edit the program, then run it here.
Run this example to see its output.
Ye approach kyun kaam karta hai?
new LinkedHashSet<>(existingCollection) — constructor directly collection le leta hai. Sab elements ek ek karke add hote hain insertion order mein. Duplicates automatically reject ho jaate hain. Phir new ArrayList<>(set) se wapas List milti hai.
HashSet se kyo nahi karte?
Teeno Set Types ka Comparison
Try it in WoHoCode
Edit the program, then run it here.
Run this example to see its output.
Summary — Kab kya choose karein:
| Chahiye kya | Use karo |
|---|---|
| Sirf uniqueness, order koi bhi | HashSet (fastest) |
| Uniqueness + jis order mein add kiya | LinkedHashSet |
| Uniqueness + sorted order + range queries | TreeSet |
Common Mistake 1: Ye Sochna Ki Revisit Karne Par Position Change Hogi
Agar chahiye ki revisit karne par element end mein aaye — LinkedHashSet se nahi hoga. Uske liye LinkedHashMap ka access-order mode use karo.
Common Mistake 2: Iterator Se Remove Karte Waqt Galti
Practice Task
Task: Tumhare paas ek user ki "recently viewed products" ki list hai — kuch products baar baar dekhe gaye hain: ["Laptop", "Phone", "Laptop", "Headphones", "Phone", "Tablet", "Laptop"]
Use karo LinkedHashSet to:
- Unique products ki list banao insertion order mein
- Total unique products count karo
- Check karo ki "Headphones" dekha ya nahi
- "Phone" view history se hatao
- Final list print karo
Hint: Constructor mein Arrays.asList(...) pass karo directly. Remove by value.
Solution:
Try it in WoHoCode
Edit the program, then run it here.
Run this example to see its output.
Kya observe karo: "Laptop" teen baar add tha — sirf ek baar rakha gaya, first position pe. "Phone" do baar tha — sirf ek baar. Remove karne par sirf "Phone" gaya, baaki ka order exactly same raha. Try karo HashSet se — same elements milenge par order random hoga.
Continue the lesson path