102 votes

Dans Java 8, pourquoi la capacité par défaut d'ArrayList est-elle désormais nulle ?

Si je me souviens bien, avant Java 8, la capacité par défaut de ArrayList était de 10.

Étonnamment, le commentaire sur le constructeur par défaut (void) dit toujours : Constructs an empty list with an initial capacity of ten.

De ArrayList.java :

/**
 * Shared empty array instance used for default sized empty instances. We
 * distinguish this from EMPTY_ELEMENTDATA to know how much to inflate when
 * first element is added.
 */
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};

...

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

0voto

TechTeddy Points 29

La taille par défaut des ArrayList dans JAVA 8 est de 10. Le seul changement apporté dans JAVA 8 est que si un codeur ajoute des éléments inférieurs à 10, les espaces vides restants de la liste de tableaux ne sont pas spécifiés comme nuls. Si je dis cela, c'est parce que j'ai moi-même vécu cette situation et qu'Eclipse m'a fait examiner cette modification de JAVA 8.

Vous pouvez justifier ce changement en regardant la capture d'écran ci-dessous. Vous pouvez y voir que la taille de ArrayList est spécifiée comme 10 dans Object[10] mais le nombre d'éléments affichés n'est que de 7. Les éléments de valeur nulle ne sont pas affichés ici. Dans JAVA 7, la capture d'écran ci-dessous est la même avec un seul changement, à savoir que les éléments à valeur nulle sont également affichés, ce qui oblige le codeur à écrire du code pour gérer les valeurs nulles s'il itère une liste de tableaux complète, alors que dans JAVA 8, ce fardeau est supprimé de la tête du codeur/développeur.

Lien vers la capture d'écran.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X