Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

ArrayList से डुप्लिकेट एलिमेंट्स हटाने के लिए Java प्रोग्राम


इस लेख में, हम समझेंगे कि 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 दृष्टिकोण

// इंसर्शन ऑर्डर संरक्षित करता है
List unique = 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 उपयोग करें)
  1. - Java में ArrayList से सबलिस्ट कैसे हटाएं?

    subList() और clear() विधियों का उपयोग करके List इंटरफ़ेस की subList() विधि दो इंटीजर वैल्यूज़ स्वीकार करती है जो एलिमेंट्स के इंडेक्स को दर्शाते हैं, और निर्दिष्ट इंडेक्सेज़ के बीच के एलिमेंट्स को हटाकर वर्तमान List ऑब्जेक्ट का व्यू लौटाती है। List इंटरफ़ेस की clear() विधि वर्तमान List ऑब्जेक्ट से

  1. - सर्कुलर लिंक्ड लिस्ट से डुप्लीकेट एलिमेंट्स हटाने के लिए Python प्रोग्राम

    जब सर्कुलर लिंक्ड लिस्ट से डुप्लीकेट्स हटाने की आवश्यकता होती है, तो एक Node क्लास बनाने की आवश्यकता होती है। इस क्लास में दो एट्रिब्यूट्स होते हैं: नोड में मौजूद डेटा, और लिंक्ड लिस्ट के अगले नोड तक पहुंच।सर्कुलर लिंक्ड लिस्ट में, हेड और रियर एक-दूसरे के निकट होते हैं। वे एक सर्कल बनाने के लिए जुड़

  1. - आसान Java: ArrayList से डुप्लिकेट आइटम्स हटाएं

    यह पोस्ट उदाहरण प्रदान करती है, जिसमें दिखाया गया है कि Java में ArrayList से डुप्लिकेट आइटम्स कैसे हटाएं। ArrayList से डुप्लिकेट स्ट्रिंग्स हटाएं चूंकि Set डुप्लिकेट तत्वों को धारण नहीं कर सकता, हम ArrayList को पैरामीटर के रूप में पास करके डुप्लिकेट्स के साथ एक Set ऑब्जेक्ट इंस्टेंशिएट कर सकते हैं