HashSet<T>.SymmetricExceptWith(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.
Ändert das aktuelle HashSet<T> Objekt so, dass nur Elemente enthalten sind, die entweder in diesem Objekt oder in der angegebenen Auflistung vorhanden sind, aber nicht beides.
public:
virtual void SymmetricExceptWith(System::Collections::Generic::IEnumerable<T> ^ other);
public:
void SymmetricExceptWith(System::Collections::Generic::IEnumerable<T> ^ other);
public void SymmetricExceptWith(System.Collections.Generic.IEnumerable<T> other);
[System.Security.SecurityCritical]
public void SymmetricExceptWith(System.Collections.Generic.IEnumerable<T> other);
abstract member SymmetricExceptWith : seq<'T> -> unit
override this.SymmetricExceptWith : seq<'T> -> unit
[<System.Security.SecurityCritical>]
member this.SymmetricExceptWith : seq<'T> -> unit
[<System.Security.SecurityCritical>]
abstract member SymmetricExceptWith : seq<'T> -> unit
override this.SymmetricExceptWith : seq<'T> -> unit
Public Sub SymmetricExceptWith (other As IEnumerable(Of T))
Parameter
- other
- IEnumerable<T>
Die Auflistung, die mit dem aktuellen HashSet<T> Objekt verglichen werden soll.
Implementiert
- Attribute
Ausnahmen
other ist null.
Beispiele
Im folgenden Beispiel werden zwei HashSet<T> Auflistungen mit überlappenden Datensätzen erstellt. Der Satz, der die niedrigeren Werte enthält, wird dann mithilfe der SymmetricExceptWith Methode so geändert, dass nur die Werte enthalten sind, die in beiden Sätzen nicht vorhanden sind.
HashSet<int> lowNumbers = new HashSet<int>();
HashSet<int> highNumbers = new HashSet<int>();
for (int i = 0; i < 6; i++)
{
lowNumbers.Add(i);
}
for (int i = 3; i < 10; i++)
{
highNumbers.Add(i);
}
Console.Write("lowNumbers contains {0} elements: ", lowNumbers.Count);
DisplaySet(lowNumbers);
Console.Write("highNumbers contains {0} elements: ", highNumbers.Count);
DisplaySet(highNumbers);
Console.WriteLine("lowNumbers SymmetricExceptWith highNumbers...");
lowNumbers.SymmetricExceptWith(highNumbers);
Console.Write("lowNumbers contains {0} elements: ", lowNumbers.Count);
DisplaySet(lowNumbers);
void DisplaySet(HashSet<int> set)
{
Console.Write("{");
foreach (int i in set)
{
Console.Write(" {0}", i);
}
Console.WriteLine(" }");
}
/* This example provides output similar to the following:
* lowNumbers contains 6 elements: { 0 1 2 3 4 5 }
* highNumbers contains 7 elements: { 3 4 5 6 7 8 9 }
* lowNumbers SymmetricExceptWith highNumbers...
* lowNumbers contains 7 elements: { 0 1 2 8 7 6 9 }
*/
let displaySet (set: HashSet<int>) =
printf "{"
for i in set do
printf $" {i}"
printfn " }"
let lowNumbers = HashSet<int>()
let highNumbers = HashSet<int>()
for i in 0..5 do
lowNumbers.Add i |> ignore
for i in 3..9 do
highNumbers.Add i |> ignore
printf $"lowNumbers contains {lowNumbers.Count} elements: "
displaySet lowNumbers
printf $"highNumbers contains {highNumbers.Count} elements: "
displaySet highNumbers
printfn "lowNumbers SymmetricExceptWith highNumbers..."
lowNumbers.SymmetricExceptWith highNumbers
printf $"lowNumbers contains {lowNumbers.Count} elements: "
displaySet lowNumbers
// This example provides output similar to the following:
// lowNumbers contains 6 elements: { 0 1 2 3 4 5 }
// highNumbers contains 7 elements: { 3 4 5 6 7 8 9 }
// lowNumbers SymmetricExceptWith highNumbers...
// lowNumbers contains 7 elements: { 0 1 2 8 7 6 9 }
Shared Sub Main()
Dim lowNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()
Dim highNumbers As HashSet(Of Integer) = New HashSet(Of Integer)()
For i As Integer = 0 To 5
lowNumbers.Add(i)
Next i
For i As Integer = 3 To 9
highNumbers.Add(i)
Next i
Console.Write("lowNumbers contains {0} elements: ", lowNumbers.Count)
DisplaySet(lowNumbers)
Console.Write("highNumbers contains {0} elements: ", highNumbers.Count)
DisplaySet(highNumbers)
Console.WriteLine("lowNumbers SymmetricExceptWith highNumbers...")
lowNumbers.SymmetricExceptWith(highNumbers)
Console.Write("lowNumbers contains {0} elements: ", lowNumbers.Count)
DisplaySet(lowNumbers)
End Sub
' This example produces output similar to the following:
' lowNumbers contains 6 elements: { 0 1 2 3 4 5 }
' highNumbers contains 7 elements: { 3 4 5 6 7 8 9 }
' lowNumbers SymmetricExceptWith highNumbers...
' lowNumbers contains 7 elements: { 0 1 2 8 7 6 9 }
Hinweise
Wenn der other Parameter eine HashSet<T> Auflistung mit dem gleichen Gleichheitsvergleich wie das aktuelle HashSet<T> Objekt ist, 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