J’ai toujours été du genre à utiliser simplement :
List<String> names = new ArrayList<>();
J'utilise l'interface comme nom de type pour la portabilité, de sorte que lorsque je pose des questions comme celles-ci, je peux retravailler mon code.
Quand faut-il utiliser [LinkedList
][1] plutôt que [ArrayList
][2] et vice-versa ?
[1] : https://docs.oracle.com/javase/9/docs/api/java/util/LinkedList.html [2] : https://docs.oracle.com/javase/9/docs/api/java/util/ArrayList.html
C'est une question d'efficacité. LinkedList
est rapide pour ajouter et supprimer des éléments, mais lent pour accéder à un élément spécifique. ArrayList
est rapide pour accéder à un élément spécifique mais peut être lent à ajouter à l'une ou l'autre extrémité, et particulièrement lent à supprimer au milieu.
Array vs ArrayList vs LinkedList vs Vector][1] va plus en profondeur, tout comme [Linked List][2]. [Liste liée][2].
[1] : http://www.javafaq.nu/java-article1111.html [2] : http://en.wikipedia.org/wiki/Linked_list
ArrayList
est accessible de manière aléatoire, tandis que LinkedList
est vraiment bon marché pour étendre et enlever des éléments. Dans la plupart des cas, ArrayList
est parfait.
A moins que vous n'ayez créé de grandes listes et mesuré un goulot d'étranglement, vous n'aurez probablement jamais à vous soucier de la différence.
Cela dépend des opérations que vous ferez plutôt sur la liste.
ArrayList
est plus rapide pour accéder à une valeur indexée. Elle est bien moins bonne pour insérer ou supprimer des objets.
Pour en savoir plus, lisez n'importe quel article qui parle de la différence entre les tableaux et les listes chaînées.