我的代码:
public static void spilledOn (Stack<Object> st1,Stack<Object> st2){
while (!st2.isEmpty()){
st1.push(st2.pop());
}
}
public static int findLengthInStack (Stack<Object> st1){
Stack<Object> tmp=new Stack<>();
int count=0;
while (tmp.isEmpty()){
tmp.push(st1.pop());
count++;
}
toolsForAnything.spilledOn(st1, tmp);
return count;
}
当我调用此方法并且使用另一种类型的堆栈时,它无法正常工作
(我是说我使用Stack<Integer>
)
有人对此有任何解决方案吗?
(我希望它可以与对象一起使用)
答案 0 :(得分:0)
如果您想编写(不必要的)方法来查找堆栈中有多少个元素,可以这样做:
public class Helper {
private static <T> int findSize(Stack<T> input) {
return input.size();
}
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(4);
stack.push(9);
System.out.println(findSize(stack));
}
}
为什么我说不必要?因为您可以简单地写:
System.out.println(stack.size());
代替:
System.out.println(findSize(stack));
答案 1 :(得分:0)
如果出于某种原因确实要使用此算法,则对于一般的Stack
,您需要为每个方法声明一个类型参数。
// (Really an API would be using super and extends here,
// but let's keep it simple.)
public static <T> void spilledOn (Stack<T> st1,Stack<T> st2){
// ^^^ ^ ^
[...]
// (I'm using a different name (E vs T) here
// just to illustrate that I am declaring two variables.
// Using the same letter would be more conventional.)
public static <E> int findLengthInStack (Stack<E> st1){
// ^^^ ^
Stack<E> tmp=new Stack<>();
// ^