मैं दो संग्रह (C # में) की तुलना करना चाहूंगा, लेकिन मैं इसे कुशलता से लागू करने का सबसे अच्छा तरीका सुनिश्चित नहीं हूं।
मैंने Enumerable.SequenceEqual के बारे में दूसरे सूत्र को पढ़ा है , लेकिन यह बिल्कुल वैसा नहीं है जैसा मैं देख रहा हूं।
मेरे मामले में, दो संग्रह समान होंगे यदि वे दोनों समान आइटम (कोई बात नहीं आदेश) होते हैं।
उदाहरण:
collection1 = {1, 2, 3, 4};
collection2 = {2, 4, 1, 3};
collection1 == collection2; // true
मैं आमतौर पर एक संग्रह के प्रत्येक आइटम के माध्यम से लूप करता हूं और देखता हूं कि क्या यह दूसरे संग्रह में मौजूद है, तो दूसरे संग्रह के प्रत्येक आइटम के माध्यम से लूप करें और देखें कि क्या यह पहले संग्रह में मौजूद है। (मैं लंबाई की तुलना करके शुरू करता हूं)।
if (collection1.Count != collection2.Count)
return false; // the collections are not equal
foreach (Item item in collection1)
{
if (!collection2.Contains(item))
return false; // the collections are not equal
}
foreach (Item item in collection2)
{
if (!collection1.Contains(item))
return false; // the collections are not equal
}
return true; // the collections are equal
हालांकि, यह पूरी तरह से सही नहीं है, और यह समानता के लिए दो संग्रहों की तुलना करने के लिए शायद सबसे प्रभावी तरीका नहीं है।
एक उदाहरण जो मैं सोच सकता हूं वह गलत होगा:
collection1 = {1, 2, 3, 3, 4}
collection2 = {1, 2, 2, 3, 4}
जो मेरे कार्यान्वयन के साथ बराबर होगा। क्या मुझे प्रत्येक आइटम के मिलने की संख्या को गिनना चाहिए और यह सुनिश्चित करना चाहिए कि दोनों संग्रहों में गिनती बराबर है?
उदाहरण कुछ प्रकार के हैं C # (चलो इसे छद्म-सी # कहते हैं), लेकिन आप जिस भाषा में भी अपनी इच्छा रखते हैं, उसका जवाब दें, इससे कोई फर्क नहीं पड़ता।
नोट: मैंने सरलता के लिए उदाहरणों में पूर्णांक का उपयोग किया था, लेकिन मैं संदर्भ-प्रकार की वस्तुओं का भी उपयोग करने में सक्षम होना चाहता हूं (वे कुंजी के रूप में सही ढंग से व्यवहार नहीं करते हैं क्योंकि केवल वस्तु के संदर्भ की तुलना की जाती है, सामग्री नहीं)।