A HashSet<T>
implementa la ICollection<T>
interfaz:
public interface ICollection<T> : IEnumerable<T>, IEnumerable
{
// Methods
void Add(T item);
void Clear();
bool Contains(T item);
void CopyTo(T[] array, int arrayIndex);
bool Remove(T item);
// Properties
int Count { get; }
bool IsReadOnly { get; }
}
A List<T>
implementos IList<T>
, que extiende elICollection<T>
public interface IList<T> : ICollection<T>
{
// Methods
int IndexOf(T item);
void Insert(int index, T item);
void RemoveAt(int index);
// Properties
T this[int index] { get; set; }
}
Un HashSet ha establecido una semántica, implementada internamente a través de una tabla hash:
Un conjunto es una colección que no contiene elementos duplicados y cuyos elementos no están en ningún orden en particular.
¿Qué gana el HashSet si pierde el comportamiento del índice / posición / lista?
Agregar y recuperar elementos del HashSet siempre es por el objeto en sí, no a través de un indexador, y cerca de una operación O (1) (La lista es O (1) add, O (1) recupera por índice, O (n) find /eliminar).
El comportamiento de un HashSet podría compararse con el uso Dictionary<TKey,TValue>
de a solo agregando / eliminando claves como valores e ignorando los valores del diccionario. Es de esperar que las claves en un diccionario no tengan valores duplicados, y ese es el punto de la parte "Establecer".
SortedSet
estructura de datos contradice lo que usted dice acerca de que el orden no es propiedad de un conjunto, o señala un malentendido del equipo de desarrollo.