Vous devriez préfèrent généralement de choisir la bonne structure de données pour le travail. Vous devez comprendre votre tâche à portée de main ainsi que les différentes options que vous avez et de les comparer en termes de l'itération, et de la recherche, et l'ajout, la suppression et l'insertion des données. En général, vous devez comprendre comment la structure de données accède et manipule la mémoire et de choisir la meilleure structure de données basée sur la façon dont vous prévoyez que votre application sera utilisée.
Évidemment, il n'est pas toujours très claire. Mais vous pouvez comprendre que les idéaux pour les différentes structures de données.
Par exemple, purement statique, de longueur fixe des données dans laquelle vous n'aurez qu'à réitérer, sans une nécessité pour la recherche, est idéal pour un tableau. Il est courant d'utiliser ces tableaux dans des algorithmes de chiffrement. Si les données sont statiques, mais au lieu d'itération, vous avez besoin de chercher, vous pourriez voulez un certain type de structure de l'arbre. Si vous voulez rapide d'insertion, le hachage est probablement l'idéal. Si les données changent souvent, vous voulez une structure qui est efficace à l'évolution de sa taille, comme une liste.
Bien sûr, il ya beaucoup de variations et de combinaisons de structures de données conçu pour résoudre toutes sortes de problèmes spécifiques. Pourquoi il y a tant de gens est en raison de l'importance qu'ils jouent dans l'écriture de programmes efficaces. De toute façon, de mon point est, en apprendre davantage sur les structures de données. Comprendre les situations idéales pour chacun et ensuite vous serez en mesure de décider ou de concevoir des structures de données pour n'importe quelle tâche.
Une ArrayList est mieux que la Matrice de
utiliser lorsque vous n'avez aucune connaissance en
l'avance le nombre d'éléments.
Liste de tableaux sont plus lents que les Tableaux. Donc,
si vous avez besoin d'efficacité essayez d'utiliser
Les tableaux si possible.
Listes peuvent facilement se développer dans la taille, et vous pouvez ajouter et supprimer des éléments dans le milieu de la liste facilement. Qui ne peut pas être fait avec des tableaux. Vous devez tenir compte de ce que vous avez besoin de la liste. Si vous ne pensez pas que la liste va changer beaucoup de choses, puis utiliser un tableau à la place.
Redimensionnement automatique n'est pas la seule raison. Liste participe dans toutes les Collections de l'API de bonté, si vous arrivez à résoudre la plupart de vos discbased liés à des problèmes en utilisant simplement l'API.
Une chose à garder à l'esprit est que le Java Collections de classes faveur des fins générales de la facilité d'utilisation au cours de l'optimisation pour des scénarios spécifiques. Donc, comme un précédent intervenant a dit, vous avez vraiment besoin de considérer comment vous allez l'utiliser.
Par exemple, si vous êtes à la création de "grandes" structures de données, puis ArrayList peut obtenir assez inefficace. Chaque fois que vous atteignez la limite de la pile, il alloue un nouveau (je crois) 2x la taille. Donc en moyenne une ArrayList est seulement va être de 75% utilisé.
En général, on peut considérer la Java des Collections pour être le premier des approximations qui sont généralement assez bon, la plupart du temps, et quand vous avez mesurables des problèmes de performances, vous devez être prêt à utiliser d'autres, plus spécialisés de Collecte des implémentations.
Dans le cas que vous mentionnez, vous pouvez envisager de ArrayList pour être seulement un moyen plus pratique de traiter avec un tableau.
Dans certains cas, lorsque vous traitez avec des types primitifs, de son mieux pour aller avec les tableaux parce que dans le cas de Arraylists, il implique boxing et unboxing les primitives qui pourrait être un peu plus lent comparativement à la manipulation des primitives avec des tableaux.
bien sûr, vous pouvez spécifier le type d'élément d'un tableau. S'il vous plaît ne pas déclarer maliste à un type de béton (ArrayList). Il est préférable si vous utilisez l'Interface de la Liste. Il n'a pas d'importance si vous utilisez de la Liste ou ArrayList si le champ n'est pas API publique. Par exemple, sur Android c'est moins de travail pour appeler une méthode sur la liste de tableaux type de béton que sur la Liste de l'interface. J'ai tendance à déclarer mes champs privés du type de béton et de retour de l'interface de l'API publique (méthodes, etc). Voigt, oui, bien sûr. mon mauvais. édité de façon appropriée.
Je utiliser des Listes, ArrayLists et c surtout parce que je n'avez pas besoin de s'inquiéter de savoir où le prochain emplacement libre ou si son assez grand, depuis le Soleil déjà fait pour moi.
Vous devriez préfèrent généralement de choisir la bonne structure de données pour le travail. Vous devez comprendre votre tâche à portée de main ainsi que les différentes options que vous avez et de les comparer en termes de l'itération, et de la recherche, et l'ajout, la suppression et l'insertion des données. En général, vous devez comprendre comment la structure de données accède et manipule la mémoire et de choisir la meilleure structure de données basée sur la façon dont vous prévoyez que votre application sera utilisée.
Évidemment, il n'est pas toujours très claire. Mais vous pouvez comprendre que les idéaux pour les différentes structures de données.
Par exemple, purement statique, de longueur fixe des données dans laquelle vous n'aurez qu'à réitérer, sans une nécessité pour la recherche, est idéal pour un tableau. Il est courant d'utiliser ces tableaux dans des algorithmes de chiffrement. Si les données sont statiques, mais au lieu d'itération, vous avez besoin de chercher, vous pourriez voulez un certain type de structure de l'arbre. Si vous voulez rapide d'insertion, le hachage est probablement l'idéal. Si les données changent souvent, vous voulez une structure qui est efficace à l'évolution de sa taille, comme une liste.
Bien sûr, il ya beaucoup de variations et de combinaisons de structures de données conçu pour résoudre toutes sortes de problèmes spécifiques. Pourquoi il y a tant de gens est en raison de l'importance qu'ils jouent dans l'écriture de programmes efficaces. De toute façon, de mon point est, en apprendre davantage sur les structures de données. Comprendre les situations idéales pour chacun et ensuite vous serez en mesure de décider ou de concevoir des structures de données pour n'importe quelle tâche.
OriginalL'auteur nicerobot
De Tableau vs ArrayList
OriginalL'auteur Adriaan Stander
Listes peuvent facilement se développer dans la taille, et vous pouvez ajouter et supprimer des éléments dans le milieu de la liste facilement. Qui ne peut pas être fait avec des tableaux. Vous devez tenir compte de ce que vous avez besoin de la liste. Si vous ne pensez pas que la liste va changer beaucoup de choses, puis utiliser un tableau à la place.
OriginalL'auteur Marius
Une chose à garder à l'esprit est que le Java Collections de classes faveur des fins générales de la facilité d'utilisation au cours de l'optimisation pour des scénarios spécifiques. Donc, comme un précédent intervenant a dit, vous avez vraiment besoin de considérer comment vous allez l'utiliser.
Par exemple, si vous êtes à la création de "grandes" structures de données, puis ArrayList peut obtenir assez inefficace. Chaque fois que vous atteignez la limite de la pile, il alloue un nouveau (je crois) 2x la taille. Donc en moyenne une ArrayList est seulement va être de 75% utilisé.
En général, on peut considérer la Java des Collections pour être le premier des approximations qui sont généralement assez bon, la plupart du temps, et quand vous avez mesurables des problèmes de performances, vous devez être prêt à utiliser d'autres, plus spécialisés de Collecte des implémentations.
Dans le cas que vous mentionnez, vous pouvez envisager de ArrayList pour être seulement un moyen plus pratique de traiter avec un tableau.
OriginalL'auteur Kashif Q.
EDIT:
Dans certains cas, lorsque vous traitez avec des types primitifs, de son mieux pour aller avec les tableaux parce que dans le cas de Arraylists, il implique boxing et unboxing les primitives qui pourrait être un peu plus lent comparativement à la manipulation des primitives avec des tableaux.
S'il vous plaît ne pas déclarer maliste à un type de béton (ArrayList). Il est préférable si vous utilisez l'Interface de la Liste.
Il n'a pas d'importance si vous utilisez de la Liste ou ArrayList si le champ n'est pas API publique. Par exemple, sur Android c'est moins de travail pour appeler une méthode sur la liste de tableaux type de béton que sur la Liste de l'interface. J'ai tendance à déclarer mes champs privés du type de béton et de retour de l'interface de l'API publique (méthodes, etc).
Voigt, oui, bien sûr. mon mauvais. édité de façon appropriée.
OriginalL'auteur Zaki
Je utiliser des Listes, ArrayLists et c surtout parce que je n'avez pas besoin de s'inquiéter de savoir où le prochain emplacement libre ou si son assez grand, depuis le Soleil déjà fait pour moi.
OriginalL'auteur Ledhund