如何实例化int类型的堆栈数组?

时间:2013-03-20 17:05:42

标签: java arrays stack wildcard towers-of-hanoi


我正在尝试创建一个堆栈数组,其中数组中的每个堆栈都是int类型。

如果我创建这样的数组:Stack<Integer>[] numbers = new Stack<Integer>[3];,则存在编译错误“Cannot create a generic array of Stack<Integer>”。所以,我正在尝试使用通配符类型而不是Integer创建堆栈数组,然后它 not 会出现此错误。

但是,如果我然后尝试将int推入其中一个堆栈(通配符“?”类型),如下所示:this.numbers[stackIndex].push(i);,则存在编译错误“{{1} }”。

那么,我如何正确实例化The method push(capture#1-of ?) in the type Stack<capture#1-of ?> is not applicable for the arguments (int)类型的堆栈数组?截至目前,我无法在这些堆栈上执行推/弹操作...

<小时/> 我的理由是尝试编写河内之塔游戏。我希望三根杆中的每一根都是int类型Stack,每个环都表示为int,并且三根杆一起被包含为三个杆的阵列堆栈。


以下是一些示例代码:

int


3 个答案:

答案 0 :(得分:2)

必须是原始Stack[],否则您可以使用List<Stack<YourClass>> lstStack = new ArrayList<Stack<YourClass>>()

在这种情况下,我更愿意使用

List<Stack<Integer>> lstStack = new ArrayList<Stack<Integer>>(stackLength);

答案 1 :(得分:0)

一种解决方案可能是:

public class StackInteger extends Stack<Integer> {
}

然后:

StackInteger[] numbers = new StackInteger[3];

甚至:

Stack<Integer>[] numbers = new StackInteger[3];

答案 2 :(得分:0)

我的猜测是你应该推送Integer而不是int

this.numbers[stackIndex].push(Integer.valueOf(i));