जावा में दो सूचियों को कैसे मर्ज करें: उदाहरणों के साथ 5 कार्यशील तरीके

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: जावा में सूचियों को क्यों मर्ज करें और भ्रम से कैसे बचें

\n\n

कल्पना करें: आपके पास दो कार्य सूचियाँ हैं - "तत्काल" और "महत्वपूर्ण"। या ग्राहकों की दो सूचियाँ - पिछले महीने और चालू महीने के डेटाबेस से। उनके साथ एक इकाई के रूप में काम करने के लिए, उन्हें मर्ज करना होगा। जावा में यह कार्य इतनी बार आता है कि Stack Overflow पर प्रश्न "How do I join two lists in Java?" हजारों बार देखा जाता है। और यह आकस्मिक नहीं है: शुरुआती लोगों के लिए सूचियों को मर्ज करना अक्सर भ्रम पैदा करता है - कभी कंपाइलेशन त्रुटि, कभी सूची अपरिवर्तनीय हो जाती है, कभी डेटा खो जाता है।

\n\n

इस लेख में हम जावा में दो सूचियों को मर्ज करने के 5 सिद्ध तरीकों पर चर्चा करेंगे - क्लासिक addAll से लेकर सुरुचिपूर्ण Stream API तक। आप जानेंगे कि विभिन्न स्थितियों के लिए कौन सी विधि चुनें, नुकसान से कैसे बचें और ऐसा कोड लिखें जो तेज़ और पूर्वानुमानित रूप से काम करे। चलिए शुरू करते हैं!

\n\n

विधि 1: क्लासिक addAll - सरल और विश्वसनीय

\n\n

सबसे सीधा तरीका Collection इंटरफ़ेस से addAll() विधि का उपयोग करना है। यह एक संग्रह के सभी तत्वों को दूसरे में जोड़ता है। यह आदर्श लगता है, लेकिन एक बारीकी है: यह मूल सूची को बदल देता है। यदि आप मूल सूचियों को अछूता रखना चाहते हैं - तो एक नई सूची बनाएँ।

\n\n

उदाहरण: मूल सूचियों को सुरक्षित रखते हुए मर्ज करना

\n\n
import java.util.ArrayList;\nimport java.util.List;\n\npublic class JoinListsExample {\n    public static void main(String[] args) {\n        List<String> listA = new ArrayList<>(List.of("Java", "Python", "C++"));\n        List<String> listB = new ArrayList<>(List.of("JavaScript", "Go", "Rust"));\n\n        // एक नई सूची बनाएँ और उसमें दोनों सूचियाँ जोड़ें\n        List<String> mergedList = new ArrayList<>(listA);\n        mergedList.addAll(listB);\n\n        System.out.println(mergedList); // [Java, Python, C++, JavaScript, Go, Rust]\n        // मूल सूचियाँ अपरिवर्तित रहती हैं\n    }\n}
\n\n

लाभ: सहज रूप से समझ में आता है, किसी भी List प्रकार के साथ काम करता है, Java 8+ की आवश्यकता नहीं है।

\n

नुकसान: यदि नई सूची नहीं बनाई गई तो मूल सूची बदल देता है; लेज़ी गणना का समर्थन नहीं करता।

\n\n

विधि 2: Stream API - आधुनिक और लचीला

\n\n

यदि आप Java 8 या उससे नए का उपयोग कर रहे हैं, तो Stream API सूचियों को मर्ज करने का एक सुरुचिपूर्ण तरीका प्रदान करता है। यह मूल डेटा को नहीं बदलता है और अन्य संक्रियाओं - फ़िल्टरिंग, सॉर्टिंग, रूपांतरण के साथ आसानी से संयोजित होता है।

\n\n

Stream.concat के माध्यम से बुनियादी मर्जिंग

\n\n
import java.util.List;\nimport java.util.stream.Collectors;\nimport java.util.stream.Stream;\n\npublic class StreamJoinExample {\n    public static void main(String[] args) {\n        List<String> listA = List.of("लाल", "हरा", "नीला");\n        List<String> listB = List.of("पीला", "बैंगनी");\n\n        List<String> mergedList = Stream.concat(listA.stream(), listB.stream())\n                                         .collect(Collectors.toList());\n\n        System.out.println(mergedList); // [लाल, हरा, नीला, पीला, बैंगनी]\n    }\n}
\n\n

फ़िल्टरिंग और सॉर्टिंग के साथ मर्जिंग

\n\n

मान लीजिए, दो संख्याओं की सूचियों को मर्ज करना है, केवल सम संख्याएँ रखनी हैं और उन्हें घटते क्रम में सॉर्ट करना है:

\n\n
import java.util.List;\nimport java.util.Comparator;\nimport java.util.stream.Collectors;\nimport java.util.stream.Stream;\n\npublic class StreamAdvancedJoin {\n    public static void main(String[] args) {\n        List<Integer> listA = List.of(5, 2, 8, 1);\n        List<Integer> listB = List.of(7, 4, 9, 3);\n\n        List<Integer> result = Stream.concat(listA.stream(), listB.stream())\n                                       .filter(n -> n % 2 == 0)   // केवल सम संख्याएँ\n                                       .sorted(Comparator.reverseOrder())\n                                       .collect(C                

ब्लॉग

पुस्तक अनुशंसाएँ