2010-08-25 18 views
14

Se uso un HashSet con una capacità iniziale di 10 e un fattore di carico di 0,5 poi ogni 5 elementi aggiunti saranno aumentate la HashSet o prima del HashSet è aumentata di 10 elementi e dopo a 15 a 20 atc. la capacità sarà aumentata?HashSet

risposta

3

È il secondo caso. Il loadFactor di HashSet e hashMap è un fattore relativo.

19

Il fattore di carico è una misura di quanto è possibile ottenere l'HashSet pieno prima che la sua capacità venga aumentata automaticamente. Quando il numero di voci nella tabella hash supera il prodotto del fattore di carico e la capacità corrente, la tabella hash viene rehashed (ovvero, le strutture di dati interne vengono ricostruite) in modo che la tabella hash abbia circa il doppio del numero di bucket.

source

+0

nice !!! Stavo cercando questa spiegazione per un po '. Quindi il default è 2/3, il che significa che con la dimensione iniziale di 16 quando compilo 12, aumenterà lo spazio. – ha9u63ar

+0

Per Java 7 e 8, il fattore di caricamento predefinito per HashSet è 0,75. – Kent

2

capacità iniziale predefinita del HashMap serve è 16 e fattore di carico è 0.75f ​​(cioè il 75% delle dimensioni della carta). Il fattore di carico rappresenta a quale livello la capacità di HashMap deve essere raddoppiata.

Ad esempio il prodotto della capacità e fattore di carico come 16 * 0,75 = 12. Ciò rappresenta che dopo aver memorizzato la chiave 12 - coppia di valori nella HashMap, la sua capacità diventa 32.