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

दो लिस्ट्स मर्ज करने के लिए Java प्रोग्राम


इस लेख में, हम समझेंगे कि दो लिस्ट्स को कैसे मर्ज करें। एक लिस्ट एक क्रमबद्ध संग्रह है जो हमें एलिमेंट्स को क्रमिक रूप से स्टोर और एक्सेस करने की अनुमति देती है। इसमें एलिमेंट्स को इंसर्ट, अपडेट, डिलीट और खोजने के लिए इंडेक्स-आधारित मेथड्स होते हैं। इसमें डुप्लिकेट एलिमेंट्स भी हो सकते हैं।

नीचे इसका प्रदर्शन है:

मान लीजिए हमारा इनपुट है:

पहली लिस्ट: [45, 60, 95]
दूसरी लिस्ट: [105, 120]

वांछित आउटपुट होगा:

दो लिस्ट्स को मर्ज करने के बाद लिस्ट: [45, 60, 95, 105, 120]

एल्गोरिदम

चरण 1 - शुरू
चरण 2 - तीन इंटीजर लिस्ट्स घोषित करें: input_list_1, input_list_2 और result_list
चरण 3 - मान परिभाषित करें
चरण 4 - input_list_1 के सभी एलिमेंट्स को result लिस्ट में जोड़ने के लिए result_list.addAll(input_list_1) का उपयोग करें
चरण 5 - input_list_2 के सभी एलिमेंट्स को result लिस्ट में जोड़ने के लिए result_list.addAll(input_list_2) का उपयोग करें
चरण 6 - result_list प्रदर्शित करें
चरण 7 - रुकें

उदाहरण 1

यहाँ, हम सभी ऑपरेशन्स को 'main' फंक्शन के तहत बांधते हैं।

import java.util.ArrayList;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        List input_list_1 = new ArrayList<>();
        input_list_1.add(45);
        input_list_1.add(60);
        input_list_1.add(95);
        System.out.println("पहली लिस्ट परिभाषित है: " + input_list_1);
        
        List input_list_2 = new ArrayList<>();
        input_list_2.add(105);
        input_list_2.add(120);
        System.out.println("दूसरी लिस्ट परिभाषित है: " + input_list_2);
        
        List result_list = new ArrayList<>();
        result_list.addAll(input_list_1);
        result_list.addAll(input_list_2);
        
        System.out.println("\nदो लिस्ट्स को मर्ज करने के बाद लिस्ट: " + result_list);
    }
}

आउटपुट

पहली लिस्ट परिभाषित है: [45, 60, 95]
दूसरी लिस्ट परिभाषित है: [105, 120]
दो लिस्ट्स को मर्ज करने के बाद लिस्ट: [45, 60, 95, 105, 120]

उदाहरण 2

यहाँ, हम ऑपरेशन्स को फंक्शन्स में एनकैप्सुलेट करते हैं जो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग प्रदर्शित करते हैं।

import java.util.ArrayList;
import java.util.List;

public class Demo {
    static void merge(List input_list_1, List input_list_2) {
        List result_list = new ArrayList<>();
        result_list.addAll(input_list_1);
        result_list.addAll(input_list_2);
        System.out.println("\nदो लिस्ट्स को मर्ज करने के बाद लिस्ट: " + result_list);
    }
    
    public static void main(String[] args) {
        List input_list_1 = new ArrayList<>();
        input_list_1.add(45);
        input_list_1.add(60);
        input_list_1.add(95);
        System.out.println("पहली लिस्ट परिभाषित है: " + input_list_1);
        
        List input_list_2 = new ArrayList<>();
        input_list_2.add(105);
        input_list_2.add(120);
        System.out.println("दूसरी लिस्ट परिभाषित है: " + input_list_2);
        
        merge(input_list_1, input_list_2);
    }
}

आउटपुट

पहली लिस्ट परिभाषित है: [45, 60, 95]
दूसरी लिस्ट परिभाषित है: [105, 120]
दो लिस्ट्स को मर्ज करने के बाद लिस्ट: [45, 60, 95, 105, 120]

लिस्ट मर्ज करने के अन्य तरीके

तरीकाकोडविशेषताएं
addAll()list1.addAll(list2)मूल list1 को संशोधित करता है, O(n)
Stream.concatStream.concat(list1.stream(), list2.stream()).collect(toList())नई लिस्ट बनाता है, फंक्शनल
Arrays.asList + addAllnew ArrayList<>(Arrays.asList(arr1, arr2))ऐरे के लिए
forEach + addlist2.forEach(list1::add)लैम्ब्डा, list1 को संशोधित करता है
Apache CommonsListUtils.union(list1, list2)लाइब्रेरी डिपेंडेंसी आवश्यक

सॉर्टेड मर्ज (मर्ज सॉर्ट का मर्ज चरण)

// दो सॉर्टेड लिस्ट्स को O(n) में मर्ज करें
public static List mergeSorted(List list1, List list2) {
    List result = new ArrayList<>();
    int i = 0, j = 0;
    
    while (i < list1.size() && j < list2.size()) {
        if (list1.get(i) <= list2.get(j)) {
            result.add(list1.get(i++));
        } else {
            result.add(list2.get(j++));
        }
    }
    
    while (i < list1.size()) result.add(list1.get(i++));
    while (j < list2.size()) result.add(list2.get(j++));
    
    return result;
}

डुप्लिकेट्स के साथ मर्ज (यूनियन)

// यूनियन - डुप्लिकेट्स हटाता है
Set union = new LinkedHashSet<>(list1);
union.addAll(list2);
List unionList = new ArrayList<>(union);

// इंटरसेक्शन - सामान्य एलिमेंट्स
Set intersection = new HashSet<>(list1);
intersection.retainAll(list2);

// डिफरेंस - list1 में जो list2 में नहीं
Set difference = new HashSet<>(list1);
difference.removeAll(list2);

प्रदर्शन नोट्स

  • addAll: सबसे तेज़, आंतरिक रूप से सरणी कॉपी का उपयोग करता है
  • क्षमता पूर्व-आवंटन: new ArrayList<>(list1.size() + list2.size()) रीअलोकेशन से बचाता है
  • लिंक्ड लिस्ट: बार-बार इंसर्शन के लिए बेहतर, लेकिन कैश-फ्रेंडली नहीं
  1. - पायथन में दो क्रमबद्ध सूचियों को मर्ज करके एक बड़ी क्रमबद्ध सूची बनाने का प्रोग्राम

    मान लीजिए हमारे पास दो क्रमबद्ध सूचियां A और B हैं। हमें उन्हें मर्ज करना है और केवल एक क्रमबद्ध सूची C बनानी है। सूचियों का आकार भिन्न हो सकता है। उदाहरण के लिए, मान लीजिए A = [1,2,4,7] और B = [1,3,4,5,6,8], तो मर्ज की गई सूची C होगी [1,1,2,3,4,4,5,6,7,8] हम इसे रिकर्सन का उपयोग करके हल करेंगे। फं

  1. - पायथन प्रोग्राम: दो लिस्ट्स का इंटरसेक्शन ढूंढना

    इंटरसेक्शन ऑपरेशन का अर्थ है, हमें List1 और List 2 से सभी कॉमन एलिमेंट्स लेने हैं और सभी एलिमेंट्स को दूसरी तीसरी लिस्ट में स्टोर करना है।List1::[1, 2, 3] List2::[2, 3, 6] List3::[2, 3]एल्गोरिदमचरण 1: लिस्ट्स इनपुट करें। चरण 2: पहले पहली लिस्ट के सभी एलिमेंट्स को ट्रैवर्स करें और दूसरी लिस्ट के एलिम

  1. - Java में दो लिस्ट्स की तुलना करें: सामान्य और गायब आइटम्स खोजें

    Java में List इंटरफेस दो लिस्ट्स की तुलना करने और लिस्ट्स से सामान्य और गायब आइटम्स खोजने के लिए मेथड्स प्रदान करता है। दो अनसॉर्टेड लिस्ट्स की समानता के लिए तुलना करें यदि आप जांचना चाहते हैं कि दो लिस्ट्स समान हैं, यानी उनमें समान आइटम्स हैं और समान इंडेक्स पर दिखाई देते हैं, तो हम उपयोग कर सकते