Quelle est la différence entre Collection et List en Java?

153

Quelle est la différence entre Collectionet Listen Java? Quand devrais-je utiliser lequel?

Truong Ha
la source
public interface La liste étend la collection {}
rai.skumar

Réponses:

263

Tout d'abord: a Listest a Collection. C'est Collectioncependant un spécialiste .

Un Collectionest juste cela: une collection d'articles. Vous pouvez ajouter des éléments, supprimer des éléments, parcourir des éléments et interroger la quantité d'éléments qui s'y trouvent.

A y Listajoute les informations sur une séquence définie de trucs: Vous pouvez obtenir l'élément à la position n , vous pouvez ajouter un élément à la position n , vous pouvez supprimer l'élément à la position n .

Dans un, Collectionvous ne pouvez pas faire cela: "le 5ème élément de cette collection" n'est pas défini, car il n'y a pas d'ordre défini.

Il existe également d'autres collections spécialisées, par exemple a Setqui ajoute la fonctionnalité selon laquelle il ne contiendra jamais deux fois le même élément.

Joachim Sauer
la source
9
oui, la liste est une spécialisation ordonnée de la collection (mais non triée) +1
atamanroman
2
La liste en java étend l'interface des collections et crée des fonctions indexées qui aident au comportement de récupération et de suppression en fonction de la position
frictionlesspulley
188

Collectionest l'interface racine de la hiérarchie des collections java. Listest une sous-interface qui définit une collection ordonnée, d'autres sous-interfaces sont Queuegénéralement qui stockent des éléments prêts à être traités (par exemple, la pile ).

Le diagramme suivant illustre la relation entre les différents types de collection Java:

collections java

Krock
la source
1
Vraiment comme votre image, je l'ai vu lors de la préparation de SCJP, mais j'oublie presque tout ces trucs ces jours-ci.
Truong Ha
1
Je dois avouer que cette image a été extraite de ce blog . J'ai moi aussi vu pour la première fois un schéma comme celui-ci dans le livre K&B SCJP .
krock
vous pouvez apprendre beaucoup du scjp cert, la plupart des livres sur ce sujet sont géniaux :)
atamanroman
Je suppose que ce Mapn'est pas un Collection.
giannis christofakis
7

L'API Java est la meilleure pour répondre à cela

Collection

L'interface racine dans la hiérarchie de la collection. Une collection représente un groupe d'objets, appelés ses éléments. Certaines collections autorisent la duplication d'éléments et d'autres non. Certains sont commandés et d'autres non commandés. Le JDK ne fournit aucune implémentation directe de cette interface: il fournit des implémentations de sous-interfaces plus spécifiques comme Set et List. Cette interface est généralement utilisée pour transmettre des collections et les manipuler là où une généralité maximale est souhaitée.

Liste (étend la collection)

Une collection ordonnée (également appelée séquence). L'utilisateur de cette interface a un contrôle précis sur l'endroit où dans la liste chaque élément est inséré. L'utilisateur peut accéder aux éléments par leur index entier (position dans la liste), et rechercher des éléments dans la liste.

Contrairement aux ensembles, les listes autorisent généralement les éléments en double. Plus formellement, les listes autorisent généralement des paires d'éléments e1 et e2 telles que e1.equals (e2), et elles autorisent généralement plusieurs éléments nuls si elles autorisent des éléments nuls. Il n'est pas inconcevable que quelqu'un veuille implémenter une liste qui interdit les doublons, en lançant des exceptions d'exécution lorsque l'utilisateur tente de les insérer, mais nous nous attendons à ce que cette utilisation soit rare.

Eugene Ryzhikov
la source
3

List et Set sont deux sous-classes de Collection.

Dans List, les données sont dans un ordre particulier.

Dans Set, il ne peut pas contenir deux fois les mêmes données.

Dans Collection, il ne stocke que des données sans ordre particulier et peut contenir des données en double.

Neeraj Bansal
la source
2

Collection est une interface de haut niveau décrivant des objets Java pouvant contenir des collections d'autres objets. Il n'est pas très précis sur la manière dont ils sont accessibles, si plusieurs copies du même objet peuvent exister dans la même collection ou si l'ordre est important. La liste est spécifiquement un ordre collection d'objets. Si vous placez des objets dans une liste dans un ordre particulier, ils resteront dans cet ordre.

Et décider où utiliser ces deux interfaces est beaucoup moins important que de décider quelle est l'implémentation concrète que vous utilisez. Cela aura des implications sur les performances spatio-temporelles de votre programme. Par exemple, si vous voulez une liste, vous pouvez utiliser une ArrayList ou une LinkedList, dont chacune aura des implications pour l'application. Pour les autres types de collection (par exemple, les ensembles), des considérations similaires s'appliquent.

Gian
la source
2

Collection est la super interface de List, donc chaque liste Java est également une instance de collection. Les collections ne sont itérables que séquentiellement (et sans ordre particulier) alors qu'une liste permet d'accéder à un élément à une certaine position via la get(int index)méthode.

Daff
la source
2

Collection est l'interface principale de la hiérarchie des collections Java et List (Sequence) est l'une des sous-interfaces qui définit une collection ordonnée.

Ramya
la source