EStack 类工作正常并给出结果输出(它获取顶部元素并将其副本放入方法下推中指定的堆栈的任何位置)。
但是,我只能让它适用于整数(因此将大多数东西都转换为整数)。我怎样才能让它适用于放入堆栈中的任何类型的对象(int、string、char、double、float 等)?
import java.util.*;
public class EStack extends Stack{
public static void pushdown(Stack s, int i){
Integer marker = (Integer) s.size() - i;
Integer top = (Integer) s.peek();
Stack temp = new Stack();
while(s.empty() != true){
Integer elem = (Integer) s.pop();
temp.push(elem);
}
while(temp.empty() != true){
if(marker == s.size()){
s.push(top);
}
Integer elem = (Integer) temp.pop();
s.push(elem);
}
}
public static void main(String[] args){
Stack s = new Stack();
s.push(1);
s.push(2);
s.push(3);
s.push(4);
pushdown(s, 2);
while(s.empty() != true){
System.out.println(s.pop());
}
}
}
输出:
4
3
4
2
1
最佳答案
我认为这会起作用,因为 Stack 接受 Object
:
public static void pushdown(Stack s, int i){
Integer marker = (Integer) s.size() - i;
Object top = s.peek();
Stack temp = new Stack();
while(s.empty() != true){
Object elem = s.pop();
temp.push(elem);
}
while(temp.empty() != true){
if(marker == s.size()){
s.push(top);
}
Object elem = temp.pop();
s.push(elem);
}
}
基本上我删除了所有的整数转换。
关于java - 扩展堆栈库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19846965/