在Java中复制java.util.Stack

mat*_*ots 3 java stack copy

我正在寻找一种java.util.Stack在Java中复制的正确方法.

Stack似乎没有复制构造函数,我唯一能够在文档中找到可能做我想要的东西的clone方法就是方法.

但是,如果我写的话

Stack<Integer> stack = (Stack<Integer>) oldstack.clone();
Run Code Online (Sandbox Code Playgroud)

编译器给我一个关于未选中类型的警告.

有没有"适当的"方式让我复制Stack?如果没有,这里最明智的做法是什么?我宁愿不要有任何警告,我觉得有点愚蠢的迭代和复制价值(虽然后者可能会成为最明智的事情).

Joe*_*oey 10

addAll我想你可以使用:

Stack<Integer> stack = new Stack();
stack.addAll(oldStack);
Run Code Online (Sandbox Code Playgroud)

但是,文档说明您应该优先使用Deque而不是Stack类,并且您可以立即获得所需内容:

Deque<Integer> stack = new ArrayDeque<Integer>(oldStack);
Run Code Online (Sandbox Code Playgroud)