HashSet<T>.IsProperSupersetOf(IEnumerable<T>) Methode

Definition

Bestimmt, ob ein HashSet<T>-Objekt eine echte Obermenge der angegebenen Auflistung ist.

public:
 virtual bool IsProperSupersetOf(System::Collections::Generic::IEnumerable<T> ^ other);
public:
 bool IsProperSupersetOf(System::Collections::Generic::IEnumerable<T> ^ other);
public bool IsProperSupersetOf (System.Collections.Generic.IEnumerable<T> other);
[System.Security.SecurityCritical]
public bool IsProperSupersetOf (System.Collections.Generic.IEnumerable<T> other);
abstract member IsProperSupersetOf : seq<'T> -> bool
override this.IsProperSupersetOf : seq<'T> -> bool
[<System.Security.SecurityCritical>]
member this.IsProperSupersetOf : seq<'T> -> bool
[<System.Security.SecurityCritical>]
abstract member IsProperSupersetOf : seq<'T> -> bool
override this.IsProperSupersetOf : seq<'T> -> bool
Public Function IsProperSupersetOf (other As IEnumerable(Of T)) As Boolean

Parameter

other
IEnumerable<T>

Die Auflistung, die mit dem aktuellen HashSet<T>-Objekt verglichen werden soll.

Gibt zurück

Boolean

true, wenn das HashSet<T>-Objekt eine echte Obermenge von other ist, andernfalls false.

Implementiert

Attribute

Ausnahmen

other ist null.

Beispiele

Im folgenden Beispiel werden zwei unterschiedliche HashSet<T> Objekte erstellt und miteinander verglichen. In diesem Beispiel allNumbers handelt es sich sowohl um eine Übermenge als auch um eine ordnungsgemäße Übermenge von lowNumbers bis allNumbers zur Änderung der IntersectWith Methode, um nur Werte zu enthalten, die in beiden Sätzen vorhanden sind. Sobald allNumbers und lowNumbers identisch sind, ist immer noch eine Übermenge vonlowNumbers, allNumbers aber es ist keine richtige Übermenge mehr.

HashSet<int> lowNumbers = new HashSet<int>();
HashSet<int> allNumbers = new HashSet<int>();

for (int i = 1; i < 5; i++)
{
    lowNumbers.Add(i);
}

for (int i = 0; i < 10; i++)
{
    allNumbers.Add(i);
}

Console.Write("lowNumbers contains {0} elements: ", lowNumbers.Count);
DisplaySet(lowNumbers);

Console.Write("allNumbers contains {0} elements: ", allNumbers.Count);
DisplaySet(allNumbers);

Console.WriteLine("lowNumbers overlaps allNumbers: {0}",
    lowNumbers.Overlaps(allNumbers));

Console.WriteLine("allNumbers and lowNumbers are equal sets: {0}",
    allNumbers.SetEquals(lowNumbers));

// Show the results of sub/superset testing
Console.WriteLine("lowNumbers is a subset of allNumbers: {0}",
    lowNumbers.IsSubsetOf(allNumbers));
Console.WriteLine("allNumbers is a superset of lowNumbers: {0}",
    allNumbers.IsSupersetOf(lowNumbers));
Console.WriteLine("lowNumbers is a proper subset of allNumbers: {0}",
    lowNumbers.IsProperSubsetOf(allNumbers));
Console.WriteLine("allNumbers is a proper superset of lowNumbers: {0}",
    allNumbers.IsProperSupersetOf(lowNumbers));

// Modify allNumbers to remove numbers that are not in lowNumbers.
allNumbers.IntersectWith(lowNumbers);
Console.Write("allNumbers contains {0} elements: ", allNumbers.Count);
DisplaySet(allNumbers);

Console.WriteLine("allNumbers and lowNumbers are equal sets: {0}",
    allNumbers.SetEquals(lowNumbers));

// Show the results of sub/superset testing with the modified set.
Console.WriteLine("lowNumbers is a subset of allNumbers: {0}",
    lowNumbers.IsSubsetOf(allNumbers));
Console.WriteLine("allNumbers is a superset of lowNumbers: {0}",
    allNumbers.IsSupersetOf(lowNumbers));
Console.WriteLine("lowNumbers is a proper subset of allNumbers: {0}",
    lowNumbers.IsProperSubsetOf(allNumbers));
Console.WriteLine("allNumbers is a proper superset of lowNumbers: {0}",
    allNumbers.IsProperSupersetOf(lowNumbers));

void DisplaySet(HashSet<int> set)
{
    Console.Write("{");
    foreach (int i in set)
    {
        Console.Write(" {0}", i);
    }
    Console.WriteLine(" }");
}

/* This code example produces output similar to the following:
* lowNumbers contains 4 elements: { 1 2 3 4 }
* allNumbers contains 10 elements: { 0 1 2 3 4 5 6 7 8 9 }
* lowNumbers overlaps allNumbers: True
* allNumbers and lowNumbers are equal sets: False
* lowNumbers is a subset of allNumbers: True
* allNumbers is a superset of lowNumbers: True
* lowNumbers is a proper subset of allNumbers: True
* allNumbers is a proper superset of lowNumbers: True
* allNumbers contains 4 elements: { 1 2 3 4 }
* allNumbers and lowNumbers are equal sets: True
* lowNumbers is a subset of allNumbers: True
* allNumbers is a superset of lowNumbers: True
* lowNumbers is a proper subset of allNumbers: False
* allNumbers is a proper superset of lowNumbers: False
*/
Shared Sub Main()

    Dim lowNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()
    Dim allNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()

    For i As Integer = 1 To 4
        lowNumbers.Add(i)
    Next i

    For i As Integer = 0 To 9
        allNumbers.Add(i)
    Next i


    Console.Write("lowNumbers contains {0} elements: ", lowNumbers.Count)
    DisplaySet(lowNumbers)

    Console.Write("allNumbers contains {0} elements: ", allNumbers.Count)
    DisplaySet(allNumbers)

    Console.WriteLine("lowNumbers overlaps allNumbers: {0}", _
        lowNumbers.Overlaps(allNumbers))

    Console.WriteLine("allNumbers and lowNumbers are equal sets: {0}", _
        allNumbers.SetEquals(lowNumbers))

    ' Show the results of sub/superset testing
    Console.WriteLine("lowNumbers is a subset of allNumbers: {0}", _
        lowNumbers.IsSubsetOf(allNumbers))
    Console.WriteLine("allNumbers is a superset of lowNumbers: {0}", _
        allNumbers.IsSupersetOf(lowNumbers))
    Console.WriteLine("lowNumbers is a proper subset of allNumbers: {0}", _
        lowNumbers.IsProperSubsetOf(allNumbers))
    Console.WriteLine("allNumbers is a proper superset of lowNumbers: {0}", _
        allNumbers.IsProperSupersetOf(lowNumbers))

    ' Modify allNumbers to remove numbers that are not in lowNumbers.
    allNumbers.IntersectWith(lowNumbers)
    Console.Write("allNumbers contains {0} elements: ", allNumbers.Count)
    DisplaySet(allNumbers)

    Console.WriteLine("allNumbers and lowNumbers are equal sets: {0}", _
        allNumbers.SetEquals(lowNumbers))

    ' Show the results of sub/superset testing with the modified set.
    Console.WriteLine("lowNumbers is a subset of allNumbers: {0}", _
        lowNumbers.IsSubsetOf(allNumbers))
    Console.WriteLine("allNumbers is a superset of lowNumbers: {0}", _
        allNumbers.IsSupersetOf(lowNumbers))
    Console.WriteLine("lowNumbers is a proper subset of allNumbers: {0}", _
        lowNumbers.IsProperSubsetOf(allNumbers))
    Console.WriteLine("allNumbers is a proper superset of lowNumbers: {0}", _
        allNumbers.IsProperSupersetOf(lowNumbers))
End Sub
' This code example produces output similar to the following:
' lowNumbers contains 4 elements: { 1 2 3 4 }
' allNumbers contains 10 elements: { 0 1 2 3 4 5 6 7 8 9 }
' lowNumbers overlaps allNumbers: True
' allNumbers and lowNumbers are equal sets: False
' lowNumbers is a subset of allNumbers: True
' allNumbers is a superset of lowNumbers: True
' lowNumbers is a proper subset of allNumbers: True
' allNumbers is a proper superset of lowNumbers: True
' allNumbers contains 4 elements: { 1 2 3 4 }
' allNumbers and lowNumbers are equal sets: True
' lowNumbers is a subset of allNumbers: True
' allNumbers is a superset of lowNumbers: True
' lowNumbers is a proper subset of allNumbers: False
' allNumbers is a proper superset of lowNumbers: False

Hinweise

Ein leerer Satz ist eine ordnungsgemäße Übermenge aller anderen Auflistungen. Daher gibt diese Methode zurück true , wenn die durch den other Parameter dargestellte Auflistung leer ist, es sei denn, die aktuelle HashSet<T> Auflistung ist ebenfalls leer.

Diese Methode gibt immer zurück false , wenn Count die Anzahl der Elemente kleiner oder gleich der Anzahl der Elemente ist other.

Wenn es sich bei other der auflistung um eine HashSet<T> Auflistung mit dem gleichen Gleichheitsvergleich wie das aktuelle HashSet<T> Objekt handelt, handelt es sich bei dieser Methode um einen O(n)-Vorgang. Andernfalls handelt es sich bei dieser Methode um einen O(n + m)-Vorgang, wobei n die Anzahl der Elemente in other und m ist .Count

Gilt für