Pourquoi est la valeur par défaut de la capacité de liste de tableaux 10?

J'ai vu la java doc pour ArrayList et a constaté que la capacité initiale de ArrayList est de 10.

 /**
 * Constructs an empty list with an initial capacity of ten.
 */
public ArrayList() {
this(10);
}

Je pense qu'il ferait de sens si elle était toute puissance de 2, mais pourquoi 10?

J'ai aussi vérifié HashMap de la capacité initiale, et il est 16 qui a du sens.

/**
 * The default initial capacity - MUST be a power of two.
 */
static final int DEFAULT_INITIAL_CAPACITY = 16;

/**
 * Constructs an empty <tt>HashMap</tt> with the default initial capacity
 * (16) and the default load factor (0.75).
 */
public HashMap() {
    this.loadFactor = DEFAULT_LOAD_FACTOR;
    threshold = (int)(DEFAULT_INITIAL_CAPACITY * DEFAULT_LOAD_FACTOR);
    table = new Entry[DEFAULT_INITIAL_CAPACITY];
    init();
}

Est-il préciser la raison derrière le numéro 10?

  • >>> il peut faire sens que si elle pourrait être n'importe quel nombre de puissance de 2, pourquoi?
  • Je pense qu'il va revenir à la forme de vie dominante dans les cs qui semblent avoir deux manipulateurs avec 5 chiffres sur chaque. Ceux utilisés pour le comptage dans les premiers jours de l'informatique. Par conséquent, ils préfèrent les puissances de 10 pour toutes sortes de choses.
  • 10 est la capacité initiale de la Liste de Tableau pas de la taille.La taille initiale est toujours 0.
  • oui, vous l'écrivez. Mon erreur.Sa capacité n'est pas la taille. J'ai modifié la question. 🙂
  • Je pensais que tout nombre qui est de la puissance, de 2 ce serait mieux que n'importe quel nombre aléatoire. Je n'ai pas d'idée précise de la façon dont ses plus approprié que n'importe quel autre numéro.J'ai pensé il y a peut être une raison spécifique, mais peut-être 10 est juste un pas trop grand , pas trop petit nombre, à utiliser pour la capacité initiale.
  • Après Java 1.7.0_40 mise à jour, liste de tableaux capacité initiale est de 0 (points de tableau vide)