मैंने इस सवाल को पढ़ा है कि यह क्यों संभव नहीं है, लेकिन समस्या का हल नहीं मिला है।
मैं एक .NET से एक आइटम को पुनः प्राप्त करना चाहूंगा HashSet<T>
। मैं एक ऐसी विधि की तलाश कर रहा हूँ जिसमें यह हस्ताक्षर हों:
/// <summary>
/// Determines if this set contains an item equal to <paramref name="item"/>,
/// according to the comparison mechanism that was used when the set was created.
/// The set is not changed. If the set does contain an item equal to
/// <paramref name="item"/>, then the item from the set is returned.
/// </summary>
bool TryGetItem<T>(T item, out T foundItem);
ऐसी विधि वाली वस्तु के लिए सेट की खोज करना O (1) होगा। किसी आइटम को पुनर्प्राप्त करने का एकमात्र तरीका HashSet<T>
सभी आइटमों की गणना करना है जो O (n) है।
मुझे इस समस्या के लिए कोई अन्य समाधान नहीं मिला है, फिर अपना खुद का बना HashSet<T>
या एक का उपयोग करें Dictionary<K, V>
। कोई अन्य विचार?
नोट:
मैं जाँच नहीं करना चाहता कि क्या HashSet<T>
आइटम शामिल है। मैं उस आइटम का संदर्भ प्राप्त करना चाहता हूं जो संग्रहीत है HashSet<T>
क्योंकि मुझे इसे अपडेट करने की आवश्यकता है (इसे किसी अन्य उदाहरण द्वारा प्रतिस्थापित किए बिना)। जो आइटम मैं पास TryGetItem
करूंगा वह बराबर होगा (तुलना तंत्र के अनुसार जो मैंने कंस्ट्रक्टर को पास किया है) लेकिन यह एक ही संदर्भ नहीं होगा।