HashSet<T>.RemoveWhere(Predicate<T>) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從集合中移除所有符合指定謂詞 HashSet<T> 定義條件的元素。
public:
int RemoveWhere(Predicate<T> ^ match);
public int RemoveWhere(Predicate<T> match);
member this.RemoveWhere : Predicate<'T> -> int
Public Function RemoveWhere (match As Predicate(Of T)) As Integer
參數
- match
- Predicate<T>
Predicate<T>代表定義要移除元素的條件。
傳回
從收藏中移除 HashSet<T> 的元素數量。
例外狀況
match 是 null。
範例
以下範例示範如何使用此HashSet<T>方法從Remove集合中移除值。 在此範例中,所有奇整數依代表指定HashSet<T>從集合中移除match。
HashSet<int> numbers = new HashSet<int>();
for (int i = 0; i < 20; i++) {
numbers.Add(i);
}
// Display all the numbers in the hash table.
Console.Write("numbers contains {0} elements: ", numbers.Count);
DisplaySet(numbers);
// Remove all odd numbers.
numbers.RemoveWhere(IsOdd);
Console.Write("numbers contains {0} elements: ", numbers.Count);
DisplaySet(numbers);
// Check if the hash table contains 0 and, if so, remove it.
if (numbers.Contains(0)) {
numbers.Remove(0);
}
Console.Write("numbers contains {0} elements: ", numbers.Count);
DisplaySet(numbers);
bool IsOdd(int i)
{
return ((i % 2) == 1);
}
void DisplaySet(HashSet<int> set)
{
Console.Write("{");
foreach (int i in set)
Console.Write(" {0}", i);
Console.WriteLine(" }");
}
// This example displays the following output:
// numbers contains 20 elements: { 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 }
// numbers contains 10 elements: { 0 2 4 6 8 10 12 14 16 18 }
// numbers contains 9 elements: { 2 4 6 8 10 12 14 16 18 }
let isOdd i = i % 2 = 1
let displaySet (set: HashSet<int>) =
printf "{"
for i in set do
printf $" {i}"
printfn " }"
let numbers = HashSet<int>()
for i in 1..20 do
numbers.Add i |> ignore
// Display all the numbers in the hash table.
printf $"numbers contains {numbers.Count} elements: "
displaySet numbers
// Remove all odd numbers.
numbers.RemoveWhere isOdd |> ignore
printf $"numbers contains {numbers.Count} elements: "
displaySet numbers
// Check if the hash table contains 0 and, if so, remove it.
if numbers.Contains 0 then
numbers.Remove 0 |> ignore
printf $"numbers contains {numbers.Count} elements: "
displaySet numbers
// This example displays the following output:
// numbers contains 20 elements: { 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 }
// numbers contains 10 elements: { 0 2 4 6 8 10 12 14 16 18 }
// numbers contains 9 elements: { 2 4 6 8 10 12 14 16 18 }
Imports System.Collections.Generic
Module Example
Public Sub Main()
Dim numbers As New HashSet(Of Integer)()
For i As Integer = 0 To 19
numbers.Add(i)
Next i
' Display all the numbers in the hash table.
Console.Write("numbers contains {0} elements: ", numbers.Count)
DisplaySet(numbers)
' Remove all odd numbers.
numbers.RemoveWhere(AddressOf IsOdd)
Console.Write("numbers contains {0} elements: ", numbers.Count)
DisplaySet(numbers)
' Check if the hash table contains 0 and, if so, remove it.
If numbers.Contains(0) Then
numbers.Remove(0)
End If
Console.Write("numbers contains {0} elements: ", numbers.Count)
DisplaySet(numbers)
End Sub
Private Function IsOdd(ByVal i As Integer) As Boolean
Return ((i Mod 2) = 1)
End Function
Private Sub DisplaySet(ByVal coll As HashSet(Of Integer))
Console.Write("{")
For Each i As Integer In coll
Console.Write(" {0}", i)
Next
Console.WriteLine(" }")
End Sub
End Module
' The example displays the following output:
' numbers contains 20 elements: { 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 }
' numbers contains 10 elements: { 0 2 4 6 8 10 12 14 16 18 }
' numbers contains 9 elements: { 2 4 6 8 10 12 14 16 18 }
備註
呼叫此方法即為 O(n) 操作,其中 n 為 Count。