Java Notes
Hands-on Java Collections programs with full explanations — word frequency, duplicate removal, grouping, sorting, LRU cache, and task scheduling. Each program explains what, why, and how.
Concepts samajhne ke baad asli test ye hai ki tum sahi collection choose karke problem solve kar pao. Har program yahan explain karta hai ki kaunsa collection kyun choose kiya aur code ki har important line kya kar rahi hai.
Program 1: Word Frequency Counter
Problem: Ek sentence mein har word kitni baar aaya — wo count karo.
Kaunsa collection? HashMap<String, Integer> — word = key, count = value. Kisi bhi word ki frequency O(1) mein mile.
Try it in WoHoCode
Edit the program, then run it here.
Run this example to see its output.
Key line samjho: frequency.getOrDefault(word, 0) + 1
- Pehli baar "java" aaya:
getOrDefault("java", 0)→ 0. 0 + 1 = 1. Map mein"java": 1. - Doosri baar "java" aaya:
getOrDefault("java", 0)→ 1 (already hai). 1 + 1 = 2. Map mein"java": 2. - Teesri baar:
"java": 3.
Output mein kya dikhega?
| are | 1 baar |
| collections | 1 baar |
| easy | 1 baar |
| great | 2 baar |
| is | 2 baar |
| java | 3 baar |
Program 2: Duplicates Hatao, Order Bachao
Problem: List mein duplicates hain. Hatao, lekin remaining elements ka original order wahi rakho.
Kyon LinkedHashSet? HashSet duplicates hatata hai but order nahi rakhta. TreeSet sort karta hai. LinkedHashSet uniqueness + insertion order dono deta hai.
Try it in WoHoCode
Edit the program, then run it here.
Run this example to see its output.
Agar HashSet use karte: [Safari, Edge, Firefox, Chrome] ya random order. Original order kho jaati.
Agar TreeSet use karte: [Chrome, Edge, Firefox, Safari] — sorted, lekin original order nahi.
Program 3: Students Ko Grade Mein Group Karo
Problem: Students aur unke marks diye hain. Inhe A, B, C grade groups mein divide karo.
Kyon Map<String, List<String>>? Key = grade, Value = us grade ke students ki list. Ek map mein saari information organised.
Try it in WoHoCode
Edit the program, then run it here.
Run this example to see its output.
Key concept: groups.get(grade) ek List return karta hai. Uss list pe .add() karo — original map mein stored list update ho jaati hai kyunki reference aaya hai, copy nahi.
Expected output:
| Grade A | [Asha (92), Kiran (91)] |
| Grade B | [Priya (85), Neha (78)] |
| Grade C | [Ravi (74), Dev (63)] |
Program 4: Anagram Groups Dhundho
Problem: Kuch words hain — inme se jo words anagram hain unhe ek group mein rakho.
Anagram kya hota hai? Ek word ke letters arrange karke doosra word bane — "eat", "tea", "ate" sab ek doosre ke anagrams hain.
Trick: Ek word ke characters sort karo. Anagram words ka sorted version same hoga. Isliye sorted version ko key banao!
Try it in WoHoCode
Edit the program, then run it here.
Run this example to see its output.
Kaise kaam karta hai:
- "eat" → sort → "aet" → key "aet" ki list mein add
- "tea" → sort → "aet" → same key "aet" ki list mein add
- "ate" → sort → "aet" → same key
- "tan" → sort → "ant" → naya key
- "nat" → sort → "ant" → same key as "tan"
- "bat" → sort → "abt" → naya key
computeIfAbsent samjho: map.computeIfAbsent(key, k -> new ArrayList<>()) — agar key exist nahi karti to nayi list banao aur map mein daalo, phir wo list return karo. Agar exist karti hai to existing list return karo. Ek line mein do kaam.
Program 5: Priority Task Queue
Problem: Tasks hain alag-alag priority ke saath. Jo sabse important hai (lowest priority number) wo pehle process ho.
Kyon PriorityQueue? Normal queue FIFO hai — jo pehle aaya wo pehle jaata hai. PriorityQueue priority-based hai — jo most important hai wo pehle jaata hai chahe baad mein add hua ho.
Try it in WoHoCode
Edit the program, then run it here.
Run this example to see its output.
Queue mein tasks kisi order mein add kiye, process priority se honge:
Note: Same priority wale tasks mein order undefined hai — P1 ke dono tasks mein se kaunsa pehle aayega guaranteed nahi.
Program 6: Browser History — LinkedHashMap
Problem: User kaunse pages visit kiya, kis order mein — track karo. Same page dobara visit karne par update karo lekin position same rahe (first visit ka order).
Try it in WoHoCode
Edit the program, then run it here.
Run this example to see its output.
GitHub dobara visit kiya to kya hua:
put()se value "GitHub Repos" mein update ho gayi- Lekin key ki position change nahi hui — abhi bhi 2nd position pe hai
LinkedHashMapposition sirf tab move karta hai jab access-order mode ho (new LinkedHashMap<>(cap, factor, true))
Program 7: Top K Frequent Elements
Problem: Array mein se top 3 most frequent numbers nikaalo.
Try it in WoHoCode
Edit the program, then run it here.
Run this example to see its output.
Step-by-step samjho:
freqmein:{4:4, 1:1, 2:2, 3:3, 5:1}entryListmein wahi entries hain — sortable form mein- Sort ke baad:
[(4,4), (3,3), (2,2), (1,1), (5,1)] - Top 3: 4, 3, 2
Practice Task
Task: Ek simple inventory system banao:
- Products ka naam aur unka stock level
HashMap<String, Integer>mein store karo - Products: Laptop-50, Phone-120, Tablet-30, Headphones-200, Charger-500
- Stock 100 se kam waale products ki list
TreeSet<String>mein daalo (sorted names) - Sabse kam stock waala product kaunsa hai — wo print karo
Hint: TreeSet ke liye loop mein check karo stock < 100. Minimum ke liye alag loop ya Collections.min() use karo value ke base par.
Solution:
Try it in WoHoCode
Edit the program, then run it here.
Run this example to see its output.
Kya observe karo: TreeSet ne automatically "Laptop" aur "Tablet" alphabetically sort kar diye — tum sort karne ki chinta nahi karte. Integer.MAX_VALUE se start karte hain minimum ke liye kyunki pehli comparison mein guaranteed chhota milega. Map ka order random ho sakta hai — isliye loop se manually minimum dhundha.
Continue the lesson path