7
votes

Quelles sont les principales différences entre une collection, une arrayliste et une liste en Java?

Une arrayliste, une liste et une collection à Java se comporte presque de la même manière et ils ont de nombreuses méthodes communes. Si tel est un cas, quelles sont les différences majeures entre elles? L'extrait de code simple suivant le démontre. XXX


Quand et où utiliser une arrayliste, une collection et une liste? Dans quelles situations spécifiques, les différences entre elles peuvent être remarquables?


1 commentaires

Peut-être qu'il sait tellement qu'il pense que la question n'est pas utile ... Ne soyez pas personnalisé en le prenant personnel. Quoi qu'il en soit, votre question peut probablement répondre par quelques autres questions, telles que Quelle est la différence entre la collecte et la liste en Java? et Qu'est-ce qu'une liste vs arraylist? .


5 Réponses :


2
votes

Vous utilisez un ArrayList dans les 3 cas. Pour expliquer davantage, Collection Collection = Nouvelle ArrayList (); pourrait être ré-écrit comme, xxx

La première instruction définit une variable de Type Collection Nommé Collection Bien que la deuxième instruction crée un nouvelle arraylist () et l'attribue à Collection < / code>.

Le compilateur permet d'attribuer un arraylist à la collection parce que arrayliste is-a collection Tous les arrayistes sont des collections car elles implémentent le collection interface . L'inverse n'est évidemment pas vraie, toutes les collections ne sont définitivement pas des arraylistes.


0 commentaires

3
votes

ArrayList est une implémentation, Collection et Liste sont des interfaces.

Collection est la super-interface quelque peu, avec la liste comme spécialisation (commandée collection ). ArrayList est une implémentation de la liste (tableau redimensionnable).

Voir le didacticiels Java, sentier: collections, implémentations .


0 commentaires

13
votes

A Collection est une interface qui définit le niveau de collecte partagé le plus élevé et étend itérable (qui définit simplement le itérateur () Méthode).

A Liste est une interface qui définit le niveau de liste de la liste partagée la plus élevée.

ArrayList est une implémentation de de la liste et en général ne serait pas utilisée dans une déclaration sauf si vous Besoin d'une garantie de mise en œuvre (par exemple, un accès indexé rapide), mais c'est bien à utiliser comme liste valeur .

Lire les documents pour voir les différences - elles sont décrites dans l'API. La mise en œuvre ( arraylist ) aura une implémentation spécifique à un type de chaque méthode dans chaque interface informatique.

En général, utilisez l'interface moins -pecific offrant ce dont vous avez besoin. Par exemple, la collection au lieu de la liste permet une sélection plus large d'implémentations. Si vous avez besoin de quelque chose comme l'accès indexé (E.g., list.get.get (int) ), une collection ne fonctionnerait pas.

Comme pour la plupart des choses, qui à utiliser dépend entièrement de vos besoins.


0 commentaires

8
votes

Pour les variables locales, cela n'a pas vraiment d'importance. Cela compte lorsque le type fait partie d'une API, c'est-à-dire dans une signature de méthode qui pourrait être appelée par code non encore écrit:

  • le type Collection a un contrat très simple - il implique essentiellement uniquement que vous avez un tas d'éléments, vous pouvez ajouter et supprimer des éléments, vérifier si les collections contiennent un élément spécifique et itérer eux. Si c'est tout ce que vous avez besoin de votre code, utilisez Collection - il donne au code qui utilise votre API la plus grande liberté.
  • Le type Liste a sous contrat selon lequel les éléments ont une commande qui ne changera pas, sauf par une manipulation explicite, que vous pouvez GET () Le N'TH ELEMENT , que ajoutez () met de nouveaux éléments à la fin, etc. Si votre code dépend de l'une de ces propriétés, vous devez utiliser list
  • ArrayList est juste une implémentation concrète de la liste et ne doit jamais être utilisée dans une API. Son utilisation ne devrait jamais être un détail de mise en œuvre (sauf si vous avez des exigences très spécifiques).

    Ne pas réfléchir soigneusement sur les types utilisés dans une API peut conduire à de nombreuses conversions inutiles et à ralentir inutilement que les collections sont converties entre collection , définir , Liste et diverses classes de mise en œuvre pour satisfaire des API mal conçues.


0 commentaires

1
votes

Collection et Liste sont des interfaces. ArrayList est une classe. Nous ne pouvons pas nouvelle collection () ou nouvelle liste () . Mais nous pouvons nouvelle arraylist () .

Collection n'a aucun concept d'index. Liste et ArrayList a une méthode pouvant définir / obtenir à l'aide d'un index. Par exemple, Collection a Ajouter (objet) . Liste et ArrayList avoir Ajouter (objet) et Ajouter (index, objet) . .


0 commentaires