Frage

Ich versuche, um zu bestimmen, ob zwei HashSet in Objekte .NET 3.5 (C #) gleich sind Sätze, d. enthält die gleichen Werte. Dies scheint wie etwas würde man offensichtlich tun wollen, aber keiner der zur Verfügung gestellten Funktionen scheinen Sie diese Informationen zu geben.

So wie ich denken kann, dies zu tun ist, indem geprüft wird, ob die Zählung der beiden Sätze gleich sind und ein Satz eine Teilmenge (nicht im eigentlichen Sinne) von der anderen Seite. Ich denke, der einzige Weg, was passieren kann, ist, wenn sie gleich Sets sind. Beispielcode:

HashSet<int> set1 = new HashSet<int>();
set1.Add(1);
set1.Add(2);
set1.Add(3);

HashSet<int> set2 = new HashSet<int>();
set2.Add(1);
set2.Add(2);
set2.Add(3);

if(set1.Count == set2.Count && set1.IsSubsetOf(set2))
{
    // do something
}

Wäre das immer? Gibt es einen besseren Weg? Warum HashSet keine public bool IsEqualSetWith() Funktion haben?

War es hilfreich?

Lösung

Sehen Sie sich die Methode SetEquals .

my_hashset.SetEquals(other);

Andere Tipps

IEqualityComparer<HashSet<int>> comp = HashSet<int>.CreateSetComparer();
Console.WriteLine("CreateSetComparer set1 == set2 : {0}", comp.Equals(set1, set2));
// or
bool areEqual = HashSet<int>.CreateSetComparer().Equals(set1, set2);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top