我有一个关于将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指出,如果这是家庭作业问题,则他们很可能希望您实施类似“河内之塔”问题之类的东西。