pourquoi LinkedList n'a pas initialCapacity en java?
Je me demande pourquoi LinkedList
n'a pas initialCapacity
.
Je sais bien quand utiliser ArrayList
et quand LinkedList
.
De bonnes pratiques pour définir Collection taille finale comme:
List<String> arraylist = new ArrayList<String>(5);
Pour LinkedList
par exemple:
List<String> linkedlist = new LinkedList<String>(); //right way
mais
List<String> arraylist = new LinkedList<String>(5); //compilation error
Quelqu'un peut-il diffuser une lumière sur cette question?
[MODIFIER]
BTW, je peux écrire
List<String> arraylist = new ArrayList<String>(5);
List<String> linkedlist = new LinkedList<String>(arraylist);
pour répondre à votre pourquoi downvote? question: DONC, encourage un peu avant la réflexion et la recherche avant de poser une question. Des milliards de pages internet qui explique la différence entre ArrayList et LinkedList et compte tenu de la connaissance de leur fonctionnement interne, il assez facile de comprendre pourquoi il n'y a pas une telle méthode. Demander à juste signifie que vous n'avez pas essayé de faire une recherche avec google.
Je peux ouvrir la documentation (je l'ai fait) et trouvez tout ce dont j'ai besoin. Tout le monde qui veut trouver rapidement une courte description (avec des images) sur ci-dessus mentionnés question sera de trouver 4-5 assez de bonnes réponses au lieu de passer du temps à l'analyse de la documentation. Maintenant, dans des Milliards de pages, nous avons une fois de plus. Il n'est DONC pas seulement de trouver le "solo" de la solution mais aussi aider à démarrage rapide. J'écris aujourd'hui sur ~7 langues et je n'ai pas de temps pour numériser les originaux doc. mais trouver de partager des exp. d'autres programmeurs.
Je peux ouvrir la documentation (je l'ai fait) et trouvez tout ce dont j'ai besoin. Tout le monde qui veut trouver rapidement une courte description (avec des images) sur ci-dessus mentionnés question sera de trouver 4-5 assez de bonnes réponses au lieu de passer du temps à l'analyse de la documentation. Maintenant, dans des Milliards de pages, nous avons une fois de plus. Il n'est DONC pas seulement de trouver le "solo" de la solution mais aussi aider à démarrage rapide. J'écris aujourd'hui sur ~7 langues et je n'ai pas de temps pour numériser les originaux doc. mais trouver de partager des exp. d'autres programmeurs.
OriginalL'auteur Maxim Shoustin | 2013-09-27
Vous devez vous connecter pour publier un commentaire.
LinkedList, par nature, n'ont pas la "capacité", car il n'a pas d'allouer de la mémoire pour les objets avant de les éléments sont ajoutés à la liste. Chaque élément dans une LinkedList est titulaire d'un pointeur vers la prochaine sur la liste.
Il n'y aurait pas de point dans l'allocation de mémoire pour la liste à l'avance, depuis LinkedList n'a pas capacité.
Donc je suppose que ArrayList est une Discbased basé sur le tableau qu'il accepte capacité initiale de collection.
OriginalL'auteur Kimi
Son modèle n'est pas basé sur un réseau, mais plutôt une véritable liste liée, et donc il n'est pas nécessaire et de plus, il n'aurait pas de sens. Il ne fait pas beaucoup de sens d'avoir les liens vides comme vous avez vide éléments de tableau.
OriginalL'auteur Hovercraft Full Of Eels
Pourquoi
LinkedList
ont une capacité initiale?ArrayList
est soutenu par un tableau, de sorte que la capacité initiale est de la taille initiale de la matrice.LinkedList
n'a pas besoin de ça.OriginalL'auteur Gabriel Negut
Pourquoi auriez-vous besoin d'une capacité sur une LinkedList? Une LinkedList ne fonctionne pas avec fixe la taille des tableaux. Chaque LinkedListElement a un pointeur (un lien!) à l'Élément suivant dans la liste. Qui, de ce fait, il est possible d'ajouter un élément à une liste liée à la constante de temps. Mais il est coûteux d'avoir accès aléatoire aux éléments de la Liste. Vous devez aller à travers tous les Éléments dans la liste jusqu'à ce que vous atteignez votre destination.
OriginalL'auteur Carsten Hoffmann
Linkedlist n'a pas besoin d'une valeur initiale. Cest la principale différence entre le tableau et la liste liée.
tableau sera la fin de quelque part. Mais linkedlist pas. Liste liée ne fonctionne pas sur les valeurs de la limite.
OriginalL'auteur Arjun
Lorsque vous déclarez un tableau que vous avez à savoir sa taille car les pointeurs doivent être créés dans la mémoire. Une liste chaînée n'a pas besoin de cela, car il n'est pas nécessaire pour les pointeurs en mémoire avant tout objet est ajouté à la liste.
Une liste chaînée est définie de manière récursive:
une liste vide
fr élément qui pointe vers la liste vide
par conséquent, chaque fois que vous ajoutez un élément, allouer de la mémoire (ou plutôt en Java, le compilateur ne ce) lorsque vous créez l'élément, puis lorsque vous l'ajoutez à la liste, il pointe désormais à la liste (ou le dernier élément dans la liste des points).
De sorte que vous n'avez pas besoin de déclarer la taille initiale de la liste, parce que d'une liste liée commence toujours avec la liste vide, et lorsqu'un élément est ajouté des points à la liste.
OriginalL'auteur Arash Saidi
ArrayList possède un tableau qui doit avoir une limite prédéfinie et qui est constamment mis à jour . LinkedList, d'autre part, simplement augmente/réduit puisqu'il n'existe pas de données sous-jacente de la structure.
OriginalL'auteur gauravJ