2010-08-25 29 views
14

Si uso un HashSet con una capacidad inicial de 10 y un factor de carga de 0,5 entonces añade el HashSet se incrementará cada 5 elementos o primero el HashSet se incrementa de 10 elementos y después en 15 en 20 atc. la capacidad se incrementará?HashSet

Respuesta

3

Es el segundo caso. El loadFactor de HashSet y hashMap es un factor relativo.

19

El factor de carga es una medida de la capacidad máxima del HashSet antes de que aumente automáticamente su capacidad. Cuando el número de entradas en la tabla hash excede el producto del factor de carga y la capacidad actual, la tabla hash se vuelve a generar (es decir, se reconstruyen las estructuras internas de datos) para que la tabla hash tenga aproximadamente el doble de cubetas.

source

+0

agradable !!! Estaba buscando esta explicación por un tiempo. Entonces el valor predeterminado es 2/3, lo que significa que con el tamaño inicial de 16 cuando llene 12, aumentará el espacio. – ha9u63ar

+0

Para Java 7 y 8, el factor de carga predeterminado para HashSet es 0.75. – Kent

2

capacidad inicial predeterminado de la HashMap toma es 16 y el factor de carga es 0.75f ​​(es decir 75% del tamaño del mapa actual). El factor de carga representa a qué nivel se debe duplicar la capacidad de HashMap.

Por ejemplo producto de la capacidad y el factor de carga como 16 * 0,75 = 12. Esto representa que después de almacenar la clave 12 - par de valores en el HashMap, su capacidad se convierte en 32.