Skip to content

पोस्ट

संग्रह तुलनाकार, दो संग्रहों के बीच अंतर खोजना

22 जुलाई 2019 • 2 मिनट पढ़ना

संग्रह तुलनाकार, दो संग्रहों के बीच अंतर खोजना

क्या आपको दो संग्रहों की तुलना करनी पड़ी है और कुछ तर्क को निष्पादित करना पड़ा है कि क्या आइटम स्रोत संग्रह में है, तुलना संग्रह में है या दोनों में है? हाँ, मुझे भी, मुझे UI और डेटाबेस से डेटा मर्ज करना था। मुझे कोई अच्छा समाधान नहीं मिला, इसलिए, मैंने एक संग्रह तुलनाकार लिखा।

यह कैसे काम करता है, इसे समझाने के लिए आइए एक उदाहरण देखें।

स्रोत डेटा में हमारे पास मान 1, 3, 4, 6 हैं, और तुलना
संग्रह में हमारे पास मान 1, 2, 3, 4, 5 हैं।

तुलना संग्रह की तुलना में स्रोत डेटा में 2 और 5 नहीं हैं, और स्रोत संग्रह की तुलना में तुलना संग्रह में 6 नहीं है।

आइए इस मर्ज के माध्यम से चलें:

  1. दोनों में (अपडेट करें)
  2. केवल तुलना संग्रह में (स्रोत में जोड़ें)
  3. दोनों में (अपडेट करें)
  4. दोनों में (अपडेट करें)
  5. केवल तुलना संग्रह में (स्रोत में जोड़ें)
  6. केवल स्रोत संग्रह में (स्रोत से हटाएं)

यहाँ कोड कैसा दिखता है:

var source = new []{1, 3, 4, 6};
var collection = new[] {1, 2, 3, 4, 5};

source.CompareTo(collection, (s, d) => s == d)
    .OnlyInSourceCollection(s=> {/* do something */})
    .OnlyInComparingCollection(s=>{/* do something */})
    .InBoth(s=> {/*do something*/})
    .Process();

LINQ का उपयोग क्यों न करें?

आप LINQ का उपयोग कर सकते हैं, हालांकि, LINQ संग्रहों को कम से कम 3 बार पुनरावृत्त करेगा जिसमें डेटा पर संचालन (जोड़ना, अपडेट करना और हटाना) शामिल नहीं है। CollectionComparer का उपयोग करते हुए, डेटा को केवल दो बार पुनरावृत्त किया जाता है।

अंतर खोजने के तेजी तरीके हैं जैसे बाइनरी सर्च, लेकिन बाइनरी सर्च केवल पूर्णांकों के साथ काम करता है। संग्रह तुलनाकार किसी भी प्रकार की तुलना का समर्थन करता है। तुलना इस कोड के साथ परिभाषित की जाती है: (s, d) => s == d

स्रोत कोड GitHub पर पाया जाता है।

लेखक: Chuck Conway एक AI इंजीनियर हैं जिनके पास सॉफ्टवेयर इंजीनियरिंग का लगभग 30 साल का अनुभव है। वह व्यावहारिक AI सिस्टम बनाते हैं—कंटेंट पाइपलाइन, इंफ्रास्ट्रक्चर एजेंट, और ऐसे टूल जो वास्तविक समस्याओं को हल करते हैं—और अपनी सीख को साझा करते हैं। सोशल मीडिया पर उनसे जुड़ें: X (@chuckconway) या YouTube और SubStack पर उनसे मिलें।

↑ शीर्ष पर वापस जाएं

आपको यह भी पसंद आ सकता है