Open In App

C# | Remove elements from a HashSet with conditions defined by the predicate

Improve
Improve
Like Article
Like
Save
Share
Report

A HashSet is an unordered collection of the unique elements. It comes under System.Collections.Generic namespace. It is used in a situation where we want to prevent duplicates from being inserted in the collection. As far as performance is concerned, it is better in comparison to the list.

HashSet<T>.RemoveWhere(Predicate<T>) method is used to remove all elements that match the conditions defined by the specified predicate from a HashSet<T> collection.

Syntax:

public int RemoveWhere (Predicate<T> match);

Return Value: This method returns the number of elements that were removed from the HashSet<T> collection.

Exception: This method will give the ArgumentNullException if the match is null.

Note: Calling this method is an O(n) operation, where n is Count i.e, the number of elements that are contained in the set.

Below are the programs to illustrate the use of HashSet<T>.RemoveWhere(Predicate<T>) Method:

Example 1:




// C# code to remove elements from a HashSet
// with conditions defined by the predicate
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a HashSet of integers
        HashSet<int> mySet = new HashSet<int>();
  
        // Inserting elements into HashSet
        for (int i = 0; i < 10; i++) {
            mySet.Add(i);
        }
  
        Console.WriteLine("The elements in HashSet are : ");
  
        // Displaying the elements in HashSet
        foreach(int i in mySet)
        {
            Console.WriteLine(i);
        }
  
        // Displaying the number of elements in HashSet
        Console.WriteLine("Number of elements are : " + mySet.Count);
  
        // Remove elements from a HashSet
        // with conditions defined by the predicate
        mySet.RemoveWhere(isEven);
  
        Console.WriteLine("The elements in HashSet are : ");
  
        // Displaying the elements in HashSet
        foreach(int i in mySet)
        {
            Console.WriteLine(i);
        }
  
        // Displaying the number of elements in HashSet
        Console.WriteLine("Number of elements are : " + mySet.Count);
    }
  
    // Helper function which tells
    // whether an element is even or not
    private static bool isEven(int i)
    {
        return ((i % 2) == 0);
    }
}


Output:

The elements in HashSet are : 
0
1
2
3
4
5
6
7
8
9
Number of elements are : 10
The elements in HashSet are : 
1
3
5
7
9
Number of elements are : 5

Example 2:




// C# code to remove elements from a HashSet
// with conditions defined by the predicate
using System;
using System.Collections.Generic;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a HashSet of integers
        HashSet<int> mySet = new HashSet<int>();
  
        // Inserting elements into HashSet
        for (int i = 0; i < 20; i++) {
            mySet.Add(i);
        }
  
        // Displaying the number of elements in HashSet
        Console.WriteLine("Number of elements are : " + mySet.Count);
  
        // Remove elements from a HashSet
        // with conditions defined by the predicate
        mySet.RemoveWhere(myFunc);
  
        // Displaying the number of elements in HashSet
        Console.WriteLine("Number of elements are : " + mySet.Count);
    }
  
    // Helper function which tells
    // whether an element is divisible
    // by both 2 and 3
    private static bool myFunc(int i)
    {
        return ((i % 2) == 0 && (i % 3 == 0));
    }
}


Output:

Number of elements are : 20
Number of elements are : 16

Reference:



Last Updated : 01 Feb, 2019
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads