Ce qui est plus rapide dans l'accès aux éléments de Java collections
Je suis en train d'essayer de comprendre ce qui est plus rapide dans l'accès aux éléments de collections en Java comme ArrayList, LinkedList, HashSet, TreeSet, HashMap, TreeMap etc.
À partir de cette question: Adapté java collection rapide pour obtenir de l'élimination rapide et, j'ai appris à connaître que ArrayList prend O(1) et TreeMap que O(log n)
où, comme ceci: Carte/liste de tableaux: lequel est le plus rapide pour rechercher un élément montre que ArryList est O(n), HashMap que O(1) et TreeMap que O(log n)
où, comme ceci: Pourquoi est-il plus rapide de traiter un tableau trié qu'un tableau non trié? dit que le tableau trié est plus rapide que des ménagères de tableau. Comme les éléments de TreeMap sont triés puis puis-je assumer toutes les collections triées sont plus rapides que les nations unies-collections triées?
Merci de m'aider dans la compréhension de ce qui est plus rapide pour accéder à des éléments de java collections de list, set, map etc implémentations.
Vous pouvez supposer que vous voulez, mais ce n'en est pas vrai. Tout simplement parce que a triés array est plus rapide que celui d'un non triés dans un cet exemple ne veut pas dire tous triés collections sont plus rapides que toutes les ménagères de collections de tous les modèles d'utilisation.
Si il y avait une seule structure de données qui est toujours mieux que tous les autres, l'API Java serait mise en œuvre que cette structure de données. Il dispose de plusieurs structures de données, car les différentes structures de données sont optimisés pour des fins différentes.
Si plus d'une collection répond à vos exigences fonctionnelles, et l'accès est question de performance, en temps votre programme avec à chaque collection.
OriginalL'auteur Chaitanya | 2013-11-30
Vous devez vous connecter pour publier un commentaire.
Chaque type de collection est adapté pour un scénario particulier. Il n'y a pas de plus rapide ou meilleur collection.
ArrayList
est votre réponse.HashMap
.LinkedList
(mais il a un très pauvres indice de performance d'accès).et ainsi de suite.
OriginalL'auteur Mohammad Dehghan
Cela dépend si vous souhaitez accéder à un élément que l'indice de base(dans le cas de la liste) ou voir si un Objet existe dans la Collection
Si vous souhaitez accéder à un index de l'élément de base,puis arraylist est plus rapide dans la mise en œuvre RandomAccess Marqueur de l'interface et est en interne soutenue par un tableau.
Définit en interne sont soutenus par la Carte ,de sorte que les performances de la Carte et de Définir en est de même de(cochez utiliser un Objet factice comme valeur dans des paires clé-valeur).Je vous suggère d'utiliser un HashSet.
Le problème que beaucoup de programmeurs de ne pas remarquer, c'est que les performances de Hashset ou HashMap est meilleur O(1) lorsque la fonction de hachage de l'Objet Clé est bonne,c'est à dire. il produit des valeurs différentes pour les différents Objets (même si ce n'est pas une exigence stricte).
REMARQUE :- Si vous êtes d'une fonction de Hachage n'est pas bon,il se dégrade à une LinkedList à l'interne et à ses performances se dégradent à O(n)
Ma préférence personnelle est d'Utiliser EnumMap ou EnumSet.Il utilise simplement les valeurs Enum, pour son fonctionnement, et les programmeurs n'avez pas à vous soucier de l'Enum hashcode/est égale à la fonction.Pour le reste les autres cas,utilisez HashSet ou HashMap(si vous n'avez pas à le faire, il a ordonné)
OriginalL'auteur Tech Geek