Copying a java.util.Stack in Java

copy, java, stack

Solution

You can use `addAll`, I guess:

Stack<Integer> stack = new Stack();
stack.addAll(oldStack);

However, the documentation notes you should use a Deque in preference to the Stack class and there you have what you want immediately:

Deque<Integer> stack = new ArrayDeque<Integer>(oldStack);

Problem

I'm looking for a proper way to copy `java.util.Stack` in Java. `Stack` doesn't seem to have a copy constructor, and the only thing I have managed to find in the documentation that might do what I want is the `clone` method. However, if I write ``` Stack<Integer> stack = (Stack<Integer>) oldstack.clone(); ``` The compiler gives me a warning about unchecked types. Is there a "proper" way for me to copy a `Stack`? If not what would be the most sensible thing to do here? I would prefer not to have any warnings, and I feel a little silly iterating and copying over values (although the later might turn out to be the most sensible thing to do).

Original source

Related problems