Comment copier une pile en Java?
J'ai une pile A et je veux créer une pile de B qui est identique à la pile A. je ne veux pas de pile B pour être simplement un pointeur vers Une-en fait, je veux créer une nouvelle pile de B qui contient les mêmes éléments que mettent dans le même ordre que la pile A. Une Pile est une pile de chaînes.
Merci!
source d'informationauteur Pankaj Udhas | 2011-10-27
Vous devez vous connecter pour publier un commentaire.
Suffit d'utiliser le clone() -méthode de la Pile-classe (elle met en œuvre Clonable).
Voici un test simple avec JUnit:
Edit:
J'ai d'abord répondu que l'avertissement serait inévitable, mais en fait c'est évitables à l'aide de
<?>
(générique) -taper:Fondamentalement, je dirais que vous êtes encore en train de faire un décoché fonte de
?
(type inconnu) àInteger
mais il n'y a pas d'avertissement. Personnellement, je préfère encore de jeter directement dansStack<Integer>
et supprimer l'avertissement avec@SuppressWarnings("unchecked")
.Stack
s'étendVector
de sorte que vous pouvez tout simplement la nouvelle un nouveauStack
et l'utilisation.addAll(...)
pour copier les éléments:La Pile classe est une sous-classe de AbstractList.
Simplement le considérer comme un AbstractList, itérer sur les éléments dans la pile à l'aide de la
get(int index)
méthode, de 0 à la longueur de votre liste/pile, et d'ajouter les éléments de la nouvelle pile.Ce ne sont pas copier les éléments - il va ajouter les éléments de la nouvelle pile. Si vous avez besoin de copier les éléments ainsi, vous aurez besoin d'aller à un autre niveau de profondeur et de créer des copies des éléments, et de les ajouter à la nouvelle pile.
Vous pouvez faire complet (ou "profonde") copiesà l'aide de la
clone
méthode, mais notez que l'objet doit implémenter l' Clonable interface afin d'obtenir profonde des copies d'objets.Vous souhaitez utiliser le clone méthode.