Java doc says - Quando il numero di voci nella tabella hash supera il prodotto del fattore di carico e la capacità di corrente, la tabella hash è rehashedHashMap capacità non aumentata ancora al raggiungimento soglia
Nel seguente programma -
HashMap<Integer, String> map = new HashMap<Integer, String>();
int i = 1;
while(i<16) {
map.put(i, new Integer(i).toString());
i++;
}
chiave è di tipo intero, all'atto dell'inserimento del 13 al 15 capacità elemento HashMap rimane come 16 e la soglia rimane uguale a 12, perché?
Debug screenshot dopo l'aggiunta dell'elemento 13 ° in mappa -
args String[0] (id=16)
map HashMap<K,V> (id=19)
entrySet null
hashSeed 0
KeySet null
loadFactor 0.75
modCount 13
size 13
table HashMap$Entry<K,V>[16] (id=25)
threshold 12
values null
i 14
[null, 1=1, 2=2, 3=3, 4=4, 5=5, 6=6, 7=7, 8=8, 9=9, 10=10, 11=11, 12=12, 13=13, null, null]
HashMap con chiave di tipo String - HashMap<String, String>
o una classe personalizzata - Map<Employee,Integer>
spettacolo comportamento previsto al 13 inserimento
Leggi il codice. Questo lo spiegherà. È possibile che qualcosa sia cambiato nell'implementazione, il che significa che javadoc non è più * esattamente * corretto. Ma questo non è interessante (IMO) perché nessun programmatore sensibile potrebbe mai dipendere dal comportamento preciso del ridimensionamento dell'hashmap. –
Sto solo cercando di capire perché il comportamento dell'implementazione è diverso per avere chiavi come Integer. Se provo HashMap ridimensiona la mappa al 13 ° inserimento –
anmolmore
Quale versione di Java (incluso aggiornamento)? – m3th0dman