Qu'est-ce que le moteur d'exécution d'opérations sur Java Arraylist?
Il semble comme il n'existe pas de critères de référence pour les classes couramment utilisés, par exemple ArrayList.
Je ne pouvais pas trouver de la documentation sur le moteur d'exécution pour insérer ou de retirer. Par rapport à Python Liste, qui est similaire à la liste de tableaux, il est bien documenté de l'exécution de la complexité (voir le lien ci-dessus).
Ce post, on en a donné un peu détaillée de référence sur la suppression et la copie des éléments à partir d'une liste de tableaux, mais cela ne fonctionne toujours pas donner l'exacte analyse de la complexité. Je suis en train de travailler sur un projet qui prend beaucoup de temps données (~de 500 000 points de données) donc je ne peux pas vous asseoir et d'assumer la suppression ou l'insertion de données à partir de ArrayList fonctionne en temps constant, comme par magie. Où puis-je trouver cette information?
List
implémentations en langage java. Ensuite, exécutez vos propres critères d'évaluation avec votre cas d'utilisation.À la recherche à la mise en œuvre est la meilleure solution à mon humble avis
Directement à partir de la javadoc: La taille, isEmpty, get, set, itérateur, et listIterator des opérations en temps constant. L'opération d'ajout s'exécute en temps constant amorti, qui est, l'ajout de n éléments nécessite O(n) fois. Toutes les autres opérations sont exécutées en temps linéaire (grosso modo). Le facteur constant est faible par rapport à celle de la LinkedList mise en œuvre.
Ou cette feuille de triche coderfriendly.com/wp-content/uploads/2009/05/... et ce DONC, la question stackoverflow.com/questions/559839/...
OriginalL'auteur turtlesoup | 2013-03-29
Vous devez vous connecter pour publier un commentaire.
Pour certaines références rapides de Java complexités:
Mais vraiment, rien ne vaut la recherche de la source, qui peut être trouvé ici.
En ce qui concerne la question de l'ajout à une liste de tableaux, par exemple, nous pouvons voir:
La complexité de cette opération dépend clairement ensureCapacityInternal:
Qui dépend grandir:
On peut donc constater que la croissance opération se déroule sous certaines conditions, et que, dans de nombreux cas, l'ajout sera un O(1). Mais vous pouvez aussi le voir sur cette les détails de quand le tableau va croître.
LinkedList
n'a jamais à s'étendre à d'alorsadd
prend toujours la même constante de temps alors que pour uneArrayList
il y a parfois besoin d'être unSystem.arraycopy
appel.Oui, comme je l'ai dit, il est bon d'avoir une compréhension de la façon dont la collection de travaux de mise en œuvre. Encore, j'ai le sentiment que cette référence est utile, parce que c'est un peu analogue à l'exemple de la liste de l'OP fourni pour la liste Python.
Pour permettre la compréhension de ce qui se passe réellement pour les différents ArrayList opérations, j'ai fourni un lien vers ArrayList source.
La source qui est-ce? je me rappelle d'une autre liste de tableaux mise en œuvre, especilly dans grandir je me souviens d'un Système.arraycopy.
OriginalL'auteur Kirby