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

Definition

Ä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

Gilt für: