java - 扩展堆栈库

标签 java inheritance stack

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/

相关文章:

java - 简单的Java api来形成和发送ntp数据包

java - Hibernate:继承中对列的附加注释

java - 在类层次结构中设置变量

c# - 在 C# 中将结构实例作为类的成员

java - 未能在项目 hapi-fhir-jpaserver-starter 上执行目标 org.apache.maven.plugins :maven-war-plugin:3. 2.3:war (default-war)

java - 同时从 FTP 读取文件并将文件保存到 FTP

java - Android:DialogInterface.OnClickListener() 中的 int 为 -1

Java理解继承: getter and setter from parents class

c - 如何操作 MIPS 代码和使用堆栈指针?

c++ - 运行时检查失败 #2 - 变量 'x' 周围的堆栈已损坏