Mi pregunta es ¿cuál es la necesidad de HashSet<T>
cuando tenemos SortedSet<T>
! Todos los métodos de HashSet están disponibles en SortedSet también, ¡además SortedSet es ventajoso ya que proporciona una colección ya ordenada! Incluso entonces HashSet está presente. ¿Para qué es útil entonces?SortedSet <T> vs HashSet <T>
Respuesta
Si no necesita ordenar, no debe usar una clase que clasifique porque significa que su aplicación estará haciendo más trabajo de lo necesario. (En otras palabras, hará que tu aplicación sea más rápida).
Más importante aún, el algoritmo se ejecutará más rápido. Hashing es O (1), mientras que el conjunto ordenado es probable que utilice un árbol de búsqueda binario, que es O (log n) en el caso promedio, un rendimiento mucho peor. –
En ese caso, podemos usar la lista
El conjunto es para elementos únicos, la lista puede contener entradas duplicadas. http://msdn.microsoft.com/en-us/library/bb359438.aspx para la documentación de HashSet
Se trata de elegir la herramienta adecuada para el trabajo. Depende de la forma en que vayas a utilizar tu colección.
This page tiene una bonita tabla que detalla las diferencias entre varias clases de colecciones.
A continuación se muestra un extracto de esa tabla relativa a las colecciones que estás preguntando:
Collection Ordering Contiguous Storage? Direct Access? Lookup Efficiency Manipulate Efficiency SortedSet Sorted No Via Key Key:O(log n) O(log n) HashSet Unordered Yes Via Key Key:O(1) O(1)
- 1. Llamando a Distinct <>() en HashSet <T>
- 2. Can .NET 4 ISet <> HashSet <> replace NHibernate Iesi.Collections ISet, HashSet?
- 3. <%# %> vs <%= %>
- 4. SortedSet <T> y anónimo IComparer <T> en el constructor no funciona
- 5. ASP.NET <%= %> vs <%: %>
- 6. ObservableCollection <> vs. List <>
- 7. rieles ERB <%- ... -%> vs <% ... %>
- 8. : <span> vs <label>
- 9. <?> vs <T>
- 10. Response.Write vs <%= %>
- 11. <span> vs <figure> vs <area>
- 12. mejores prácticas rieles Erb (<% %> vs <% -%> vs <%- -%>)
- 13. IEnumerable <T> VS VS IList <T> IQueryable <T>
- 14. XSD Formateo <element><complexType> vs <complexType /><element/>
- 15. C# HashSet <T> rendimiento de búsqueda (en comparación con un ObservableCollection <T>)?
- 16. ¿Por qué HashSet <T> no implementa IReadOnlyCollection <T>?
- 17. Type.GetType(), HashSet <T> y la Asamblea Calificación
- 18. ¿Es Enumerable.ElementAt <TSource> O (1) para HashSet?
- 19. Conversión de HashSet <String> a Cadena []
- 20. Convierta una matriz a HashSet <T> en .NET
- 21. ¿Por qué es HashSet <T> .IsReadOnly explícito?
- 22. C todo el contenido de HashSet <string>
- 23. ¿Cuándo debo usar el tipo HashSet <T>?
- 24. HashSet <T> en Windows Phone 7
- 25. hashset vs IQueryable
- 26. "<>" vs "no en"
- 27. cat archivo | ... vs ... <archivo
- 28. Lista @OneToMany <> vs Set <> diferencia
- 29. WPF ObservableCollection <T> vs BindingList <T>
- 30. <out T> vs <T> en Genericos
¿Qué pasa si usted tiene un conjunto de cosas que no tienen un buen orden en el primer lugar? ¿Cómo crearías un * conjunto * ordenado de puntos en tres espacios, por ejemplo? ¿Qué ordenarías? –
en Tuple.Create (x, y, z) :) – Grozz
HashSet si desea que los elementos no se clasifiquen y que sean únicos? Desde MSDN> La clase HashSet proporciona > operaciones de conjunto de alto rendimiento. Un conjunto > es una colección que no contiene > elementos duplicados, y cuyos elementos > no están en un orden particular. http://msdn.microsoft.com/en-us/library/bb359438.aspx –
OnesimusUnbound