web-dev-qa-db-fra.com

Java Stack Push () vs add ()

J'essaie d'utiliser Stack, mais la terminologie me laisse un peu perplexe.

Je trouve que la classe Stack n'a que Push(E e) selon le document Java. 

Et a add(E e) et addAll(Collection<? extends E> c) en tant que méthode héritée de la classe Vector.

Ont-ils les mêmes fonctionnalités ou est-il préférable d'utiliser Push(...) pour insérer des éléments dans l'objet Stack.

En d'autres termes, vais-je rencontrer des problèmes si j'utilise add(...) au lieu de Push(...)?

19

Kalyanaraman Santhanam:

Edit: Vais-je rencontrer des problèmes si j'utilise add (...) au lieu de Pousser(...)?

Décidément, vous ne rencontrerez aucun problème, car add fait partie de l'interface List ainsi que de la Stack, mais vous devriez remarquer la lisibilité accrue de votre code et vos intentions par d'autres programmeurs. La méthode Push leur indiquera qu'ils utilisent l'objet Stack, ils sauront à quoi s'attendre. Notez également que Push a une valeur de retour différente de add (le premier a le type "objet poussé" et le dernier juste une réponse boolean)

14
rook

Ce sont les mêmes.

Depuis le JavaDoc :

Pousse un objet sur le dessus de cette pile. Ceci a exactement le même effet en tant que:

addElement(item)
3
Frank

(désolé si mon anglais est mauvais, je viens de MX).

Théoriquement, c'est la même chose, car add est une méthode de toute la classe générique ... Mais il est très recommandé d'utiliser Push, car vous utilisez une pile et si vous utilisez la méthode "Push" vais comprendre un peu plus ... 

2
Carlos Garnica Jr.

Si vous utilisez une Stack, vous devez utiliser Push() car il s'agit du moyen standard d'ajouter des éléments sur une pile (en raison de l'idée de la structure de données d'une Stack). Cela signifie que le "sommet de la pile" est l'élément que vous venez de Push()ed.

Vous ne devriez ajouter et supprimer que du haut d'une Stack et si vous pensez avoir besoin d'autres moyens pour ajouter des données (ajouter au milieu ou à la fin), je vous déconseille d'utiliser une Stack car cela rendrait votre code plus difficile à comprendre.

Edit: (reflétant la modification de la question) Comme je l’ai déjà mentionné, je pas s’attendrais à voir add() si j’avais affaire à un Stack. add() n'est pas la syntaxe standard pour utiliser une Stack, Push() est. Je recommanderais d'utiliser uniquement les fonctions définies dans le corps principal de la variable javadoc, sauf si vous avez spécifiquement besoin de celles héritées.

1
ryaanwells

Oui, je ne trouve pas beaucoup de différence entre Push () et la méthode add () sur leur utilisation. Mais j'ai préféré utiliser Push () lors de l'utilisation de Stack.

0
RAJNISH YADAV

Comme tout le monde l’a dit, cela a le même effet avec "Push". Certains peuvent demander, mais pourquoi? J'ai lu récemment ce sujet, et il disait que c'était une violation du principe "principe du moindre étonnement". Cela ressemble donc à un défaut de conception de l’API et non à un problème majeur. Cela nous enseigne, aucun logiciel, framework, API, etc. n'est parfait, tout a ses propres défauts.

0
LazyX

Tout est une question d'héritage. S'il s'agit d'un Stack, vous devez utiliser Push() pour être clair et suivre le modèle. Mais, en fait, de Java SE spec:

Pousse un objet sur le dessus de cette pile. Cela a exactement le même effet que: addElement(item)

0
rook