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. Quand et où utiliser une arrayliste, une collection et une liste? Dans quelles situations spécifiques, les différences entre elles peuvent être remarquables? P> p>
5 Réponses :
Vous utilisez un La première instruction définit une variable de Type Le compilateur permet d'attribuer un ArrayList code> dans les 3 cas.
Pour expliquer davantage, Collection Collection Collection CODE> Bien que la deuxième instruction crée un nouvelle arraylist Collection < / code>. P> arraylist arrayliste code> is-a collection code> 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. P> p>
Voir le didacticiels Java, sentier: collections, implémentations . p> ArrayList code> est une implémentation, Collection code> et Liste code> sont des interfaces. p>
Collection code> est la super-interface quelque peu, avec la liste code> comme spécialisation (commandée collection code>). ArrayList code> est une implémentation de la liste code> (tableau redimensionnable). p>
A A Lire les documents pour voir les différences - elles sont décrites dans l'API. La mise en œuvre ( En général, utilisez l'interface moins em> -pecific offrant ce dont vous avez besoin. Par exemple, la collection Comme pour la plupart des choses, qui à utiliser dépend entièrement de vos besoins. P> Collection code> est une interface qui définit le niveau de collecte partagé le plus élevé et étend itérable code> (qui définit simplement le itérateur () code > Méthode). P>
Liste CODE> est une interface qui définit le niveau de liste code> de la liste code> partagée la plus élevée. p>
ArrayList code> est une implémentation em> de em> de la liste code> code> et en général ne serait pas utilisée dans une déclaration em> 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 em>. p>
arraylist code>) aura une implémentation spécifique à un type de chaque méthode dans chaque interface informatique. P>
code> au lieu de la liste code> 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) code>), une collection code> ne fonctionnerait pas. P>
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: p>
Collection code> 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 code> - il donne au code qui utilise votre API la plus grande liberté. Li>
- Le type
Liste code> a sous contrat selon lequel les éléments ont une commande qui ne changera pas, sauf par une manipulation explicite, que vous pouvez GET () CODE> Le N'TH ELEMENT , que ajoutez () code> 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 code> li>
-
ArrayList code> est juste une implémentation concrète de la liste code> 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). LI>
ul>
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 code>, définir code>, Liste code> et diverses classes de mise en œuvre pour satisfaire des API mal conçues. P>
Collection code> et Liste code> sont des interfaces. ArrayList code> est une classe. Nous ne pouvons pas nouvelle collection () code> ou nouvelle liste () code>. Mais nous pouvons nouvelle arraylist () code>. P>
Collection code> n'a aucun concept d'index. Liste code> et ArrayList code> a une méthode pouvant définir / obtenir à l'aide d'un index. Par exemple, Collection code> a Ajouter (objet) code>. Liste CODE> et ArrayList CODE> avoir Ajouter (objet) code> et Ajouter (index, objet) code>. P>.
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? .