Java在堆栈之间移动数字

Java在堆栈之间移动数字,java,stack,Java,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)

我有一个问题,关于在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);
Stack stack1=新堆栈();
Stack stack2=新堆栈();
Stack stack3=新堆栈();
堆栈1.推送(10);
堆栈1.推送(5);
堆栈1.推送(25);
堆栈1.推送(2);
堆栈1.推送(100);
我希望这些数字在stack3中按从高到低的顺序排列。 stack3喜欢100,25,10,5,2


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

由于Java中的一些错误设计决策,可以创建
集合。排序(stack1)
,然后简单地从第一个堆栈中弹出并推入第二个堆栈

但请注意,由于Java 6,因此最好使用
ArrayDeque
(或另一个
Deque
)而不是
Stack
。如果堆栈不是
列表
,则顺序为:

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

  • 但这些都是java“黑客”。如果这是一个家庭作业问题,他们更可能希望您实现类似smas所指出的“河内塔”问题。

    由于Java中的一些错误设计决策,可以进行
    集合。排序(stack1)
    ,然后简单地从第一个堆栈中弹出并推入第二个堆栈

    但请注意,由于Java 6,因此最好使用
    ArrayDeque
    (或另一个
    Deque
    )而不是
    Stack
    。如果堆栈不是
    列表
    ,则顺序为:

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

  • 但这些都是java“黑客”。如果这是一个家庭作业问题,他们更可能希望你实施类似smas所指出的“河内塔”问题。

    重复波佐的回答:

        Stack<Integer> stack3 = new Stack<Integer>();
        Integer[] arr = stack.toArray(new Integer[stack.size()]);
        Arrays.sort(arr);
        stack3.addAll(Arrays.asList(arr));
    
    Stack stack3=新堆栈();
    整数[]arr=stack.toArray(新整数[stack.size()]);
    数组。排序(arr);
    stack3.addAll(Arrays.asList(arr));
    
    重新表述波佐的回答:

        Stack<Integer> stack3 = new Stack<Integer>();
        Integer[] arr = stack.toArray(new Integer[stack.size()]);
        Arrays.sort(arr);
        stack3.addAll(Arrays.asList(arr));
    
    Stack stack3=新堆栈();
    整数[]arr=stack.toArray(新整数[stack.size()]);
    数组。排序(arr);
    stack3.addAll(Arrays.asList(arr));
    
    此问题称为:河内塔问题,请尝试在wikipedia/google中查找此问题的代码/描述。

    此问题称为:河内塔问题,请尝试在wikipedia/google中查找此问题的代码/描述。

    是否只允许使用堆栈?你能临时储存吗?这些是你唯一关心的数字,还是你想要一个通用的解决方案?你只允许使用堆栈?你能临时储存吗?这些是你唯一关心的数字,还是你想要一个通用的解决方案?数字可以是任意数字,我可以使用临时堆栈。数字可以是任意数字,我可以使用临时堆栈。我故意不包含代码。这可能是一个家庭作业,学生们应该学会写代码:)我故意不写代码。这可能是一个家庭作业,学生应该学会写代码:)不,不是。在Hanoi问题中,任何堆栈的元素总是被排序的。在Billy的问题中,元素最初是未排序的,目标是仅使用堆栈对它们进行排序。我想元素最初未排序并不重要。同样的算法也会起作用不,它不是。在Hanoi问题中,任何堆栈的元素总是被排序的。在Billy的问题中,元素最初是未排序的,目标是仅使用堆栈对它们进行排序。我想元素最初未排序并不重要。同样的算法也适用