HashSet<T>.IsProperSubsetOf(IEnumerable<T>) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Bestimmt, ob ein HashSet<T>-Objekt eine echte Teilmenge der angegebenen Auflistung ist.
public:
virtual bool IsProperSubsetOf(System::Collections::Generic::IEnumerable<T> ^ other);
public:
bool IsProperSubsetOf(System::Collections::Generic::IEnumerable<T> ^ other);
public bool IsProperSubsetOf (System.Collections.Generic.IEnumerable<T> other);
[System.Security.SecurityCritical]
public bool IsProperSubsetOf (System.Collections.Generic.IEnumerable<T> other);
abstract member IsProperSubsetOf : seq<'T> -> bool
override this.IsProperSubsetOf : seq<'T> -> bool
[<System.Security.SecurityCritical>]
member this.IsProperSubsetOf : seq<'T> -> bool
[<System.Security.SecurityCritical>]
abstract member IsProperSubsetOf : seq<'T> -> bool
override this.IsProperSubsetOf : seq<'T> -> bool
Public Function IsProperSubsetOf (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
true
, wenn das aktuelle HashSet<T>-Objekt eine echte Teilmenge 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 lowNumbers
ist sowohl eine Teilmenge als auch eine richtige Teilmenge von allNumbers
, bis allNumbers
mit der IntersectWith -Methode geändert wird, sodass nur Werte enthalten sind, die in beiden Sätzen vorhanden sind. Einmal allNumbers
und lowNumbers
sind identisch, lowNumbers
ist immer noch eine Teilmenge von, allNumbers
ist aber keine richtige Teilmenge 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
Eine leere Menge ist eine richtige Teilmenge jeder anderen Auflistung. Daher gibt diese Methode zurück true
, wenn die durch das aktuelle HashSet<T> Objekt dargestellte Auflistung leer ist, es sei denn, der other
Parameter ist ebenfalls ein leerer Satz.
Diese Methode gibt immer zurück false
, wenn Count größer oder gleich der Anzahl der Elemente in other
ist.
Wenn es sich bei der Auflistung, die durch dargestellt wird other
, 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
Count und m
die Anzahl der Elemente in other
ist.