HashSet

HashSet<T> is implemented with a hashtable that stores just keys;

Here's the definition for HashSet<T>:

 
public class HashSet<T> : ICollection<T>, IEnumerable<T>, IEnumerable
{
    // Constructors public HashSet();
    public HashSet (IEnumerable<T> collection);
    public HashSet (IEqualityComparer<T> comparer);
    public HashSet (IEnumerable<T> collection, IEqualityComparer<T> comparer);
    
    // Testing for membership 
    public bool Contains (T item);
    
    // Adding / removing
    public bool Add (T item);
    public bool Remove (T item);
    public int RemoveWhere (Predicate<T> match);
    public void Clear();
    
    // Set operations - destructive
    public void UnionWith (IEnumerable<T> other); 
    // Adds 
    public void IntersectWith (IEnumerable<T> other); 
    // Removes 
    public void ExceptWith  (IEnumerable<T> other); 
    // Removes 
    public void SymmetricExceptWith (IEnumerable<T> other); // Removes
    
    // Set operations - bool
    public bool IsSubsetOf  (IEnumerable<T> other); 
    public bool IsProperSubsetOf  (IEnumerable<T> other); 
    public bool IsSupersetOf  (IEnumerable<T> other); 
    public bool IsProperSupersetOf (IEnumerable<T> other); 
    public bool Overlaps  (IEnumerable<T> other); 
    public bool SetEquals (IEnumerable<T> other);
    
    // Other
    public int Count { get; }
    public IEqualityComparer<T> Comparer { get; }
    public void CopyTo (T[] array);
    public void CopyTo (T[] array, int arrayIndex);
    public void CopyTo (T[] array, int arrayIndex, int count);
    public void TrimExcess();
    public static IEqualityComparer<HashSet<T>> CreateSetComparer();
}

SortedSet<T> is implemented with a red/black tree.

The following constructs a HashSet<char> from an existing collection, tests for membership, and then enumerates the collection.

 
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

class Sample
{
    public static void Main()
    {
        var letters = new HashSet<char>("java2s.com tutorial and demo");

        Console.WriteLine(letters.Contains('t')); // true
        Console.WriteLine(letters.Contains('j')); // false

        foreach (char c in letters) 
            Console.Write (c);
    }

}
  

The output:


True
True
jav2s.com turilnde

We can pass a string into HashSet<char>'s constructor because string implements IEnumerable<char>.

java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.