Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📘 Lesson  ·  Lesson 60

Remove Duplicates

समस्या

Array में दोहराई values हो सकती हैं, जैसे {1, 2, 2, 3, 4, 4, 5}। Duplicates हटाना मतलब हर एक की सिर्फ़ एक copy रखना — {1, 2, 3, 4, 5}। Java में सबसे साफ़ तरीका HashSet इस्तेमाल करता है, जो सिर्फ़ unique values रखता है।

💡 HashSet अपने-आप duplicates हटाता है, तो यह इस काम को सबसे आसान tool है।

HashSet इस्तेमाल

import java.util.*;

int[] arr = {1, 2, 2, 3, 4, 4, 5};
Set<Integer> unique = new HashSet<>();
for (int x : arr) {
    unique.add(x);      // duplicates अनदेखा
}
System.out.println(unique);
[1, 2, 3, 4, 5]

हर element को HashSet में जोड़ना सिर्फ़ distinct वाले रखता है — duplicates बस अनदेखा हो जाते हैं। यह सबसे छोटा और तेज़ आम तरीका है।

Dry run

Dry Run — Duplicates hatana Set se, {1,2,2,3,4,4,5}
xSet me pehle se hai?Set ab
1nahi{1}
2nahi{1,2}
2haan{1,2} (skip)
3nahi{1,2,3}
4nahi{1,2,3,4}
4haan{1,2,3,4} (skip)
5nahi{1,2,3,4,5}
💡 ऐसे समझिए

हर element Set में जोड़ा जाता है। अगर वो पहले से हो (दोहराए 2 और 4), Set उसे अनदेखा करता है। सिर्फ़ unique values बचती हैं।

मैन्युअल तरीका

int[] arr = {1, 2, 2, 3};
ArrayList<Integer> result = new ArrayList<>();
for (int x : arr) {
    if (!result.contains(x)) {   // अभी तक नहीं देखा
        result.add(x);
    }
}
System.out.println(result);
[1, 2, 3]

Set बिना, आप loop करके हर element सिर्फ़ तब जोड़ते हैं जब वो पहले से results में न हो। यह चलता पर धीमा (O(n²)) है क्योंकि contains हर बार हर रखा item जाँचता है।

Order बनाए रखना

साधारण HashSet मूल order नहीं रखता। Order मायने रखे तो LinkedHashSet इस्तेमाल कीजिए:

Set<Integer> unique = new LinkedHashSet<>();
// items को पहली बार जोड़ने के क्रम में रखता है

LinkedHashSet duplicates हटाता है और insertion order बनाए रखता है — दोनों का सबसे अच्छा।

आम गलतियाँ

  • HashSet से order की उम्मीद। Order मायने रखे तो LinkedHashSet इस्तेमाल कीजिए।
  • बड़े arrays को मैन्युअल तरीका। यह O(n²) है — Set बेहतर।
  • Import भूलना। Sets java.util से आते हैं।
  • Set में primitives इस्तेमाल करना। Integer इस्तेमाल कीजिए, int नहीं।

सारांश

  • Duplicates हटाना हर value की एक copy रखता है।
  • HashSet अपने-आप duplicates हटाता है — सबसे आसान तरीका।
  • contains वाला मैन्युअल loop भी चलता पर धीमा है।
  • मूल order रखने को LinkedHashSet इस्तेमाल कीजिए।
  • HashSet तरीका लगभग O(n); मैन्युअल O(n²) है।

आगे, sets सीखिए HashSet vs TreeSet में, या arrays के साथ काम कीजिए Java arrays में।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

Java में array से duplicates कैसे हटाऊँ?
सबसे आसान तरीका सारे elements को HashSet में जोड़ना है, जो अपने-आप सिर्फ़ unique values रखता है। आप इसे हर element की पहले से रखे वालों से तुलना करके मैन्युअल भी कर सकते हैं।
Duplicates हटाने को HashSet अच्छा क्यों है?
HashSet सिर्फ़ unique items store करता है और duplicates अपने-आप ठुकराता है। तो हर array element को set में जोड़ना आपको सिर्फ़ distinct values देता है, कोई अतिरिक्त checking code नहीं चाहिए।
क्या HashSet मूल order रखता है?
नहीं, साधारण HashSet insertion order नहीं रखता। अगर आपको मूल order बनाए रखना है, इसके बजाय LinkedHashSet इस्तेमाल कीजिए, जो items को जोड़ने के क्रम में रखता है।
Set बिना duplicates कैसे हटाऊँ?
Array में loop कीजिए और, हर element को, जाँचिए वो अब तक इकट्ठे results में पहले से है या नहीं। न हो तो जोड़िए। यह मैन्युअल तरीका चलता है पर HashSet से धीमा (O(n²)) है।
HashSet तरीके की time complexity क्या है?
यह लगभग O(n) है, क्योंकि HashSet में जोड़ना लगभग constant time है और आप इसे प्रति element एक बार करते हैं। यह बड़े arrays को मैन्युअल O(n²) तुलना तरीके से बहुत तेज़ है।
← Back to Java Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicFloyds Triangle आपकी प्रगति: 60 / 61 (98%) · Lesson 61 / 61 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें