Table of Contents

Class ConcurrentSet<T>

Namespace
Garyon.DataStructures
Assembly
Garyon.dll

Provides a thread-safe set implementation based on ConcurrentDictionary<TKey, TValue>.

public sealed class ConcurrentSet<T> : ISet<T>, ICollection<T>, IReadOnlyCollection<T>, IEnumerable<T>, IEnumerable where T : notnull

Type Parameters

T

The type of values stored in the set.

Inheritance
ConcurrentSet<T>
Implements
ISet<T>
Inherited Members
Extension Methods

Remarks

This encapsulates ConcurrentDictionary<TKey, TValue> as a concurrent set, using byte as the value type that is mapped from the key of T. The idea of using byte is inspired by dotnet/roslyn.

Constructors

ConcurrentSet()

Initializes a new instance of the ConcurrentSet<T> class.

public ConcurrentSet()

ConcurrentSet(IEqualityComparer<T>)

Initializes a new instance of the ConcurrentSet<T> class with the specified equality comparer.

public ConcurrentSet(IEqualityComparer<T> comparer)

Parameters

comparer IEqualityComparer<T>

Properties

Count

Gets the number of elements contained in the set.

public int Count { get; }

Property Value

int

IsEmpty

Gets a value indicating whether the set is empty.

public bool IsEmpty { get; }

Property Value

bool

Methods

Add(T)

Adds the specified value to the set.

public bool Add(T value)

Parameters

value T

Returns

bool

Clear()

Removes all elements from the set.

public void Clear()

Contains(T)

Determines whether the ICollection<T> contains a specific value.

public bool Contains(T item)

Parameters

item T

The object to locate in the ICollection<T>.

Returns

bool

true if item is found in the ICollection<T>; otherwise, false.

ExceptWith(IEnumerable<T>)

Removes all elements in the specified collection from the current set.

public void ExceptWith(IEnumerable<T> other)

Parameters

other IEnumerable<T>

The collection of items to remove from the set.

Exceptions

ArgumentNullException

other is null.

GetEnumerator()

Returns an enumerator that iterates through the collection.

public IEnumerator<T> GetEnumerator()

Returns

IEnumerator<T>

An enumerator that can be used to iterate through the collection.

IntersectWith(IEnumerable<T>)

Modifies the current set so that it contains only elements that are also in a specified collection.

public void IntersectWith(IEnumerable<T> other)

Parameters

other IEnumerable<T>

The collection to compare to the current set.

Exceptions

ArgumentNullException

other is null.

IsProperSubsetOf(IEnumerable<T>)

Determines whether the current set is a proper (strict) subset of a specified collection.

public bool IsProperSubsetOf(IEnumerable<T> other)

Parameters

other IEnumerable<T>

The collection to compare to the current set.

Returns

bool

true if the current set is a proper subset of other; otherwise, false.

Exceptions

ArgumentNullException

other is null.

IsProperSupersetOf(IEnumerable<T>)

Determines whether the current set is a proper (strict) superset of a specified collection.

public bool IsProperSupersetOf(IEnumerable<T> other)

Parameters

other IEnumerable<T>

The collection to compare to the current set.

Returns

bool

true if the current set is a proper superset of other; otherwise, false.

Exceptions

ArgumentNullException

other is null.

IsSubsetOf(IEnumerable<T>)

Determines whether a set is a subset of a specified collection.

public bool IsSubsetOf(IEnumerable<T> other)

Parameters

other IEnumerable<T>

The collection to compare to the current set.

Returns

bool

true if the current set is a subset of other; otherwise, false.

Exceptions

ArgumentNullException

other is null.

IsSupersetOf(IEnumerable<T>)

Determines whether the current set is a superset of a specified collection.

public bool IsSupersetOf(IEnumerable<T> other)

Parameters

other IEnumerable<T>

The collection to compare to the current set.

Returns

bool

true if the current set is a superset of other; otherwise, false.

Exceptions

ArgumentNullException

other is null.

Overlaps(IEnumerable<T>)

Determines whether the current set overlaps with the specified collection.

public bool Overlaps(IEnumerable<T> other)

Parameters

other IEnumerable<T>

The collection to compare to the current set.

Returns

bool

true if the current set and other share at least one common element; otherwise, false.

Exceptions

ArgumentNullException

other is null.

Remove(T)

Removes the first occurrence of a specific object from the ICollection<T>.

public bool Remove(T item)

Parameters

item T

The object to remove from the ICollection<T>.

Returns

bool

true if item was successfully removed from the ICollection<T>; otherwise, false. This method also returns false if item is not found in the original ICollection<T>.

Exceptions

NotSupportedException

The ICollection<T> is read-only.

SetEquals(IEnumerable<T>)

Determines whether the current set and the specified collection contain the same elements.

public bool SetEquals(IEnumerable<T> other)

Parameters

other IEnumerable<T>

The collection to compare to the current set.

Returns

bool

true if the current set is equal to other; otherwise, false.

Exceptions

ArgumentNullException

other is null.

SymmetricExceptWith(IEnumerable<T>)

Modifies the current set so that it contains only elements that are present either in the current set or in the specified collection, but not both.

public void SymmetricExceptWith(IEnumerable<T> other)

Parameters

other IEnumerable<T>

The collection to compare to the current set.

Exceptions

ArgumentNullException

other is null.

TryRemove(T)

Tries to remove the value from the set.

public bool TryRemove(T value)

Parameters

value T

Returns

bool

true if the value was successfully removed; otherwise false.

UnionWith(IEnumerable<T>)

Modifies the current set so that it contains all elements that are present in the current set, in the specified collection, or in both.

public void UnionWith(IEnumerable<T> other)

Parameters

other IEnumerable<T>

The collection to compare to the current set.

Exceptions

ArgumentNullException

other is null.