इस लेख में, हम समझेंगे कि ArrayList से डुप्लिकेट एलिमेंट्स कैसे हटाएं। ArrayList क्लास एक रिसाइज़ेबल ऐरे है, जो java.util पैकेज में पाया जा सकता है। Java में बिल्ट-इन ऐरे और ArrayList के बीच का अंतर यह है कि ऐरे का आकार संशोधित नहीं किया जा सकता।
नीचे इसका प्रदर्शन है:
मान लीजिए हमारा इनपुट है:
इनपुट लिस्ट: [150, 250, 300, 250, 500, 150, 600, 750, 300]
वांछित आउटपुट होगा:
बिना डुप्लिकेट्स वाली लिस्ट: [150, 250, 300, 500, 600, 750]
एल्गोरिदम
चरण 1 - शुरू चरण 2 - घोषित करें चरण 3 - मान परिभाषित करें चरण 4 - इंटीजर मानों का एक ArrayList बनाएं और इसमें एलिमेंट्स इनिशियलाइज़ करें चरण 5 - कंसोल पर ArrayList प्रदर्शित करें चरण 6 - इंटीजर्स का एक और LinkedHashSet बनाएं चरण 7 - पिछले ArrayList से एलिमेंट्स को इसमें एलिमेंट्स के रूप में शामिल करने के लिए 'addAll' मेथड का उपयोग करें चरण 8 - चूंकि यह एक सेट है, यह केवल यूनिक मान जोड़ता है चरण 9 - ArrayList के एलिमेंट्स क्लियर करें चरण 10 - यूनिक एलिमेंट्स के साथ सेट को कंसोल पर प्रदर्शित करें चरण 11 - रुकें
उदाहरण 1
यहाँ, हम सभी ऑपरेशन्स को 'main' फंक्शन के तहत बांधते हैं।
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
public class Demo {
public static void main(String[] args) {
System.out.println("आवश्यक पैकेज आयात किए गए हैं");
ArrayList input_list = new ArrayList<>(Arrays.asList(150, 250, 300, 250, 500, 150, 600, 750, 300));
System.out.println("लिस्ट परिभाषित है: " + input_list);
Set temp_set = new LinkedHashSet<>();
temp_set.addAll(input_list);
input_list.clear();
input_list.addAll(temp_set);
System.out.println("\nबिना डुप्लिकेट्स वाली लिस्ट है: \n" + input_list);
}
}
आउटपुट
आवश्यक पैकेज आयात किए गए हैं लिस्ट परिभाषित है: [150, 250, 300, 250, 500, 150, 600, 750, 300] बिना डुप्लिकेट्स वाली लिस्ट है: [150, 250, 300, 500, 600, 750]
उदाहरण 2
यहाँ, हम ऑपरेशन्स को फंक्शन्स में एनकैप्सुलेट करते हैं जो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग प्रदर्शित करते हैं।
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
public class Demo {
static void remove_duplicates(ArrayList input_list) {
Set temp_set = new LinkedHashSet<>();
temp_set.addAll(input_list);
input_list.clear();
input_list.addAll(temp_set);
System.out.println("\nबिना डुप्लिकेट्स वाली लिस्ट है: \n" + input_list);
}
public static void main(String[] args) {
System.out.println("आवश्यक पैकेज आयात किए गए हैं");
ArrayList input_list = new ArrayList<>(Arrays.asList(150, 250, 300, 250, 500, 150, 600, 750, 300));
System.out.println("लिस्ट परिभाषित है: " + input_list);
remove_duplicates(input_list);
}
}
आउटपुट
आवश्यक पैकेज आयात किए गए हैं लिस्ट परिभाषित है: [150, 250, 300, 250, 500, 150, 600, 750, 300] बिना डुप्लिकेट्स वाली लिस्ट है: [150, 250, 300, 500, 600, 750]
विभिन्न दृष्टिकोण
| दृष्टिकोण | ऑर्डर संरक्षित | समय जटिलता | स्पेस जटिलता |
|---|---|---|---|
| LinkedHashSet | हाँ | O(n) | O(n) |
| HashSet + पुनर्निर्माण | नहीं | O(n) | O(n) |
| Stream.distinct() | हाँ | O(n) | O(n) |
| नेस्टेड लूप | हाँ | O(n²) | O(1) |
| सॉर्ट + आसन्न हटाएं | नहीं (सॉर्टेड) | O(n log n) | O(1) |
Java 8+ Stream दृष्टिकोण
// इंसर्शन ऑर्डर संरक्षित करता है Listunique = input_list.stream() .distinct() .collect(Collectors.toList()); // या LinkedHashSet के साथ List unique = input_list.stream() .collect(Collectors.toCollection(LinkedHashSet::new)) .stream() .collect(Collectors.toList());
क्यों LinkedHashSet?
- इंसर्शन ऑर्डर बनाए रखता है (महत्वपूर्ण जब ऑर्डर मायने रखता है)
- O(1) औसत इंसर्शन/लुकअप
- थ्रेड-सेफ नहीं (आवश्यकता होने पर Collections.synchronizedSet उपयोग करें)