我有一个关于将Stack与Java结合使用的问题。

假设我有三叠

Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
Stack<Integer> stack3 = new Stack<Integer>();

stack1.push(10);
stack1.push(5);
stack1.push(25);
stack1.push(2);
stack1.push(100);


我希望这些数字在stack3中按从高到低的顺序排列。
所以stack3喜欢100,25,10,5,2

在堆栈之间移动数字的最佳方法是什么?

最佳答案

由于Java中的一些错误的设计决策,可以制作Collections.sort(stack1)然后简单地从第一个堆栈弹出并压入第二个堆栈。

但是请注意,由于Java 6,最好使用ArrayDeque(或其他Deque)代替Stack。对于不是List的堆栈,顺序为:


将它们全部从第一个堆栈中取出(在List或数组中)
对它们进行排序(Collections.sort(..)Arrays.sort(..)
将它们按顺序推入另一个堆栈


但是这些都是Java的“ hacks”。 smas指出,如果这是家庭作业问题,则他们很可能希望您实施类似“河内之塔”问题之类的东西。

10-08 15:01