क्या नेट में "सेट" डेटा संरचना है?

आदर्श रूप में, मैं एक टेम्पलेट लॉजिकल सेट क्लास की तलाश में हूं। इसमें सभी मानक सेट ऑपरेशंस होंगे जैसे संघ, छेड़छाड़, इत्यादि, और डुप्लीकेट आइटम को पतन करें।

I ended up creating my own set class based on the C# Dictionary<>- just using the Keys.

0
ro fr bn
एक सेट के सरल कार्यान्वयन के लिए यह प्रश्न देखें।
जोड़ा लेखक dharmatech, स्रोत
सी # सेट संग्रह? का संभावित डुप्लिकेट
जोड़ा लेखक dharmatech, स्रोत
@ d03boy: ठीक है इसमें हैशसेट <�टी> है, लेकिन इसका उपयोग करने के बाद मुझे लगता है कि इंटरफ़ेस वास्तव में बेकार है।
जोड़ा लेखक Skurmedel, स्रोत
.NET 4 में दो कार्यान्वयन, हैशसेट और सॉर्टेडसेट के साथ एक आईसेट इंटरफ़ेस है
जोड़ा लेखक Eric Hauser, स्रोत
नेट ईमानदारी से सेट संग्रह नहीं है? कितनी बड़ी निराशा होती है। जावा के लिए एक और फायदा।
जोड़ा लेखक Joe Phillips, स्रोत

6 उत्तर

मुझे नहीं लगता कि सी # में कुछ भी बनाया गया है, लेकिन मुझे पता है कि नेट पर चारों ओर तैरने वाले कुछ कार्यान्वयन हैं। इस तरह की चीज़ों के आस-पास कुछ अच्छे लेख भी हैं:

This is part 6 of a series on efficiently representing data structure. This part focuses on representing sets in C#.

An implementation of a set collection
An implementation of a set class
Yet another implementation of a set class

और अंत में...

मैंने वास्तव में एक सेट कार्यान्वयन के आधार पर यह लाइब्रेरी स्वयं उपयोग किया है मैंने एक साल या उससे पहले किया था।

0
जोड़ा

HashSet is about the closest you'll get, I think.

0
जोड़ा
मैट, +1। ऐसा लगता है कि उसने क्या पूछा। ऐसा लगता है कि कोडप्रोजेक्ट आलेख लिखा गया था के बाद लंबे समय तक जोड़ा गया था।
जोड़ा लेखक Derek Park, स्रोत

मैंने देखा है कि सबसे अच्छा सेट कार्यान्वयन अद्भुत विंटलेलेक्ट पावर कलेक्शन का हिस्सा है: http://www.codeplex.com/PowerCollections

The set implementation can be found here:
http://www.codeplex.com/PowerCollections/SourceControl/FileView.aspx?itemId=101886&changeSetId=6259
It has all the expected set operations (union, intersect, etc).

उम्मीद है की यह मदद करेगा!

0
जोड़ा

नहीं, ढांचे में एक मूल रूप से नहीं है। एक ओपन सोर्स कार्यान्वयन है जो अधिकांश परियोजनाओं का उपयोग करता है, (यानी nHibernate) Iesi.Collections कहा जाता है। इसके बारे में कोडप्रोजेक्ट आलेख यहां दिया गया है:

http://www.codeproject.com/KB/recipes/sets.aspx

0
जोड़ा

यहां एक सरल कार्यान्वयन है:

public sealed class MathSet : HashSet, IEquatable>
{
    public override int GetHashCode() => this.Select(elt => elt.GetHashCode()).Sum().GetHashCode();

    public bool Equals(MathSet obj) => SetEquals(obj);

    public override bool Equals(object obj) => Equals(obj as MathSet);

    public static bool operator ==(MathSet a, MathSet b) =>
        ReferenceEquals(a, null) ? ReferenceEquals(b, null) : a.Equals(b);

    public static bool operator !=(MathSet a, MathSet b) => !(a == b);
}

उदाहरण का उपयोग:

var a = new MathSet { 1, 2, 3 };
var b = new MathSet { 3, 2, 1 };

var c = a.Equals(b);                       //true

var d = new MathSet> { a, b };//contains one element

var e = a == b;                            //true

यह प्रश्न देखें कि इस दृष्टिकोण को <�कोड पर क्यों माना गया था > HashSet ।

0
जोड़ा

क्या आपने 3.5 में हैशसेट की जांच की है?

0
जोड़ा