Quelque part où j'ai vu un java.util.list code> défini comme ci-dessous.
Liste
Quelqu'un peut-il expliquer ce que l'entier entre parenthèses et comment l'utiliser? Merci. P>
6 Réponses :
Il spécifie la capacité de la liste p>
Pour définir une capacité initiale de la flambée. P>
Je suppose que cela est bien défini dans la documentation que j'ai affichée. Peut-être que la question op est: pourquoi? B>
Le paramètre décide de la capacité de démarrage de la liste code>. p>
Un [modifier] strong> ArrayList code> attribue la mémoire en interne pour contenir un certain nombre d'objets. Lorsque vous ajoutez également plus d'éléments, il doit attribuer plus de mémoire et copier toutes les données au nouvel endroit, qui prend un certain temps. Selon vous, vous pouvez spécifier une supposition sur le nombre d'objets que vous allez mettre dans votre
ArrayList Code> pour aider Java.
Une taille de départ de 0 code> indique probablement que le programmeur pense que la liste code> code> sera rarement utilisée, il n'est donc pas nécessaire de l'attribuer la mémoire pour commencer. p>
Pour clarifier, comme @LuGigimendoza et @emory disent dans la discussion, il est très difficile de penser à un scénario où il serait logique d'utiliser 0 code> comme une capacité initiale. Dans la majorité des cas, le constructeur par défaut fonctionne très bien. P>
"Une taille de départ de 0 indique probablement que le programmeur pense que la arracheliste sera rarement utilisée" peut-être, peut-être pas. Cela dépend de la mise en œuvre.
Bonjour Luiggi, que voulez-vous dire par "dépend de la mise en œuvre". Pensez-vous qu'un programmeur peut avoir une autre raison de définir la taille initiale comme zéro. Pourriez-vous s'il vous plaît expliquer?
@Luigimendoza dépend de la mise en œuvre? La mise en œuvre est spécifiée ( Docjar.com/html/aPi/java /util/arraylist.java.html ). La raison la plus logique de spécifier une taille de départ de 0 est de conserver la mémoire, anticipant qu'il sera vide pendant une longue période.
@emory en effet, cela pourrait être un très mauvais cas si vous savez que votre matrice pourrait avoir des milliers d'éléments, car chaque fois que vous ajoutez un nouvel élément, le tableau doit augmenter (cela signifie: créer un nouveau tableau avec une taille augmentée par la dernière fois. Longueur de la matrice par facteur, peut-être 1,5, puis copiez tous les éléments de l'ancien tableau vers le nouveau, oui assez lourd lorsque vous avez beaucoup de données). En outre, le constructeur par défaut initialise la matrice d'une capacité de 10, basée dans une analyse ultérieure effectuée par les concepteurs de langue Java. Je ne vois pas le bien d'une capacité initiale sur la performance.
@emory aussi c'est la mise en œuvre OpenJDK, il existe également une mise en œuvre Sun JDK (et peut-être d'autres implémentations que je ne savais pas encore).
Un cas de bord où il pourrait avoir de sens est le sens, c'est imprimé vide (@ notnullable liste
Ajouter code>. Ajouter une vérification de la santé mentale
affirmez 0 == allhonestpolitis. Taille (): "BS"; code>
@emory Dans les cas où vous ne savez pas quelle capacité initiale pourrait être, utilisez simplement le constructeur par défaut, sa taille sera 0 aussi.
@Luiggimendoza Je recommande d'utiliser le constructeur par défaut, mais si je lis correctement la mise en œuvre OpenJDK, la taille du constructeur par défaut sera de 10.
@emory Si vous avez un scénario de cas réel pour prouver l'initialisation d'une arracheListe avec 0 capacité est meilleur que les concepteurs de langue Java proposés (10 par défaut), je vais accepter que je me trompe et que vous êtes correct (et non Dites-moi qu'un tableau de 10 longueurs a pire une performance qu'un réseau de 5 longueurs, ce n'est tout simplement pas valide lorsque vous avez plus de 100 mbs RAM disponible).
Ne confondez pas avec la taille Lorsque vous appelez
New ArrayList
En outre, il serait bon d'ajouter les avantages et les pièges d'initialisation de la graisse avec différentes capacités.
J'aurais pu être mais la question ne concerne pas " les avantages et les pièges d'initialisation de l'arraylist code> avec différentes capacités i>".
Hmm ... Je reçois cela pourrait être mis en place une terminologie, mais n'est-ce pas "taille" de sorte de trompeur? "Fullness" ne serait-il pas "chargée", "vacance" ou "saturation" être mieux?
Lorsqu'il est utilisé comme il construit une liste vide avec la capacité initiale spécifiée. p> Par défaut lorsque rien n'est spécifié. p> une liste vide avec une capacité initiale de dix est construite. P> lire Ici p> Ne pas mal interpréter cela comme une taille de la flambée. P> p>
Il est de définir une capacité initiale de l'arrayliste code> code>. p>
Vous n'êtes pas obligé de passer un paramètre de taille si vous le souhaitez, car il existe également un constructeur qui n'a aucun argument. p>
Chaque fois que vous ajoutez un élément supplémentaire, et si la taille de la liste ne permet pas d'addition, la classe code> code> créera une autre liste La capacité de l'instanciation initiale est là pour créer la taille exacte code> de la liste code> dans le
tas < / Code> Avec une taille plus grande et copiera le contenu de l'ancien tableau code> à celui-ci avec l'élément supplémentaire, supprimant l'ancien tableau code>. p>
code> qui aide à ne pas attribuer des blocs de mémoire supplémentaires en créant de nouvelles listes
< / code>, supprimant les anciens et copier le contenu au moment de l'exécution, où il aide en performance. P>
ArrayList