En .NET, hay un constructor para Dictionary<TKey, TValue>
que toma un parámetro, int capacity
. Esto es lo mismo que con muchas otras colecciones como List<T>
, Queue<T>
y Stack<T>
; además, según the MSDN documentation:¿Por qué no hay Dictionary.TrimExcess()?
La capacidad de un diccionario es la cantidad de elementos que se pueden agregar al diccionario antes de que sea necesario cambiar el tamaño. A medida que se agregan elementos a un diccionario, la capacidad se incrementa automáticamente según sea necesario al reasignar la matriz interna.
Esto me suena más o menos lo mismo que con otras colecciones como List<T>
, etc Dado que estas colecciones característica de auto-cambiar el tamaño de la conducta cuando sea necesario y, por tanto, son propensos a tener una mayor capacidad que la requerida, la mayoría de ellos cuentan con una TrimExcess
método. Esto es útil si, por ejemplo, está agregando un número desconocido de elementos a la colección a la vez, y después de eso no agregará ningún elemento adicional.
¿Por qué Dictionary<TKey, TValue>
no tiene este mismo método TrimExcess
?
(Negación: estoy bastante familiarizado con las "características no existe por defecto" respuesta; supongo que estoy en su mayoría sólo se pregunta si hay una razón particular por la TrimExcess
para un Dictionary
no tiene sentido, o por qué sería significativamente más difícil de implementar que para colecciones más simples como List
.)
Desde ' HashSet' tiene un método 'TrimExcess' y también funciona internamente con una HashTable, creo que no hay ninguna razón técnica para no implementar' TrimExcess' para 'Dictionary'. Incluso dicen en la documentación que un 'HashSet' es como un' Diccionario' sin valores. – Kjara