Par défaut capacité initiale ArrayList, vecteur, HashMap, HashTable, HashSet, le facteur de charge, l'extension incrémentale
Ici, pour discuter de ces raisons communes pour une capacité initiale par défaut et l'expansion est la suivante:
Lorsque la mise en œuvre sous-jacente implique le conteneur d'extension ou réattribuer une section contiguë de mémoire plus importante (allocation dynamique de mémoire n'est pas nécessaire si la distribution est réallocation discrète, l'insertion d'un nouvel élément est affecté un temps discret), toutes les données d'origine de réplication votre conteneur à la nouvelle mémoire, ce qui réduit considérablement l'efficacité sans aucun doute.
le facteur de charge du facteur est inférieur ou égal à 1, à savoir, lorsque la longueur moyenne de * le nombre d'éléments est supérieur au facteur de capacité lorsque le coefficient de chargement, pour l'expansion.
De plus, il y a l'extension de la valeur par défaut multiples, différentes situations d'expansion des conteneurs.
éléments de liste sont, répétables
ArrayList, par défaut vecteur capacité initiale de 10
** Vecteur: thread-safe **, mais plus lent
Sous-jacent structure de données est un tableau de la structure
Le facteur de charge est de 1: Autrement dit, lorsque le nombre d'éléments est supérieur à la capacité d'une longueur, d'expansion
extension incrémentale: 1 fois le volume d'origine
La capacité vectorielle de 10, après une expansion d'une capacité de 20
** ArrayList: ** thread-safe, vitesse de recherche rapide
Sous-jacent structure de données est un tableau de la structure
l'expansion progressive: 1,5 fois le volume initial
Comme la capacité de ArrayList 10, après une expansion d'une capacité de 15
SET élément (set) en désordre irremplaçable.
** HashSet: thread-safe **, la vitesse d'accès rapide
Le HashMap est une implémentation sous-jacente (données de conservation), met en œuvre l'ensemble d'interface
La capacité initiale par défaut de 16 (16 est la raison pour laquelle, comme décrit dans le fond de la HashMap)
Le facteur de charge est de 0,75: à savoir, lorsque le nombre d'éléments est supérieur à 0,75 fois la longueur de la capacité, pour l'expansion
extension incrémentale: 1 fois le volume d'origine
La capacité de HashSet de 16 ans, après une expansion d'une capacité de 32
La carte est un ensemble de deux colonnes
** HashMap: défaut ** capacité initiale de 16, une longueur de 2 ^ n restent
(Pourquoi est 2 ^ 4 est 16h16, l'efficacité requête peut être améliorée, plus, << 1 32 = 16 -> Pour une analyse détaillée de la raison peut être séparée, ou l'analyse de code source)
Le facteur de charge est de 0,75: à savoir, lorsque le nombre d'éléments est supérieur à 0,75 fois la longueur de la capacité, pour l'expansion
extension incrémentale: 1 fois le volume d'origine
La capacité de HashMap de 16 ans, après une expansion d'une capacité de 32
** Hashtable: capacité initiale par défaut ** de 11
Thread-safe, mais lent et ne permet pas de clé / valeur est nulle
Le facteur de charge est de 0,75: à savoir, lorsque le nombre d'éléments est supérieur à 0,75 fois la longueur de la capacité, pour l'expansion
extension incrémentale: la longueur du tableau d'origine + 2 *
Comme la capacité de table de hachage 11, après une expansion d'une capacité de 23