Confronto tra HashMap
e Hashtable
codice sorgente in jdk 1.6, vidi sotto codici all'interno HashMapPerché initialCapacity di Hashtable è 11 mentre il DEFAULT_INITIAL_CAPACITY in HashMap è 16 e richiede una potenza di 2
/**
* The default initial capacity - MUST be a power of two.
*/
static final int DEFAULT_INITIAL_CAPACITY = 16;
int capacity = 1;
while (capacity < initialCapacity)
capacity <<= 1;
tuttavia, in Hashtable , ho visto sotto i codici?
table = new Entry[initialCapacity];
public Hashtable() {
this(11, 0.75f);
}
quindi la mia domanda è: perché HashMap richiede una potenza di 2 come capacità iniziale? e mentre hashtable scegliere 11 come la capacità iniziale predefinita? Suppongo che questo non ha nulla a che fare con la cosa che hashtable è thread-safe e non consente chiavi o valori nulli.
thx.
+1 per curiosità – AlexR
Grande domanda uomo, continua così. –
@hetaoblog domanda brillante. – Geek