Java 将堆栈从数组转换为arrayList

Java 将堆栈从数组转换为arrayList,java,arrays,arraylist,stack,Java,Arrays,Arraylist,Stack,我有一个使用数组的堆栈实现,我正在尝试将其转换为数组列表。数组位于顶部,arrayList位于底部。这两段代码做的是相同的事情吗?我还有两段pop方法,一个数组和一个数组列表。但对于这一个,我得到一个错误,temp尚未初始化,无法找到符号temp。谢谢你的帮助 USING ARRAY public void push(T value) { if(size==values.length) expandCapacity();

我有一个使用数组的堆栈实现,我正在尝试将其转换为数组列表。数组位于顶部,arrayList位于底部。这两段代码做的是相同的事情吗?我还有两段pop方法,一个数组和一个数组列表。但对于这一个,我得到一个错误,temp尚未初始化,无法找到符号temp。谢谢你的帮助

 USING ARRAY
public void push(T value)
    {     
        if(size==values.length)
            expandCapacity();

        values[size] = value;
        size++;
    }


 USING ARRAYLIST
 public void push(T value)
    {

        values.add(value);

        size++;
    }



USING ARRAY
public T pop()
    {    
        if(isEmpty())
            throw new RuntimeException("Attempt to pop from empty stack");

        size--;
        T temp = values[size];
        values[size] = null;
        return temp;
    }

 USING ARRAYLIST

public T pop()
    {
        T temp;

        if(isEmpty())
            throw new RuntimeException("Attempt to pop from empty stack");

        size--;

        values.add(temp);

         values.temp = null;
        //values[size] = null;
        return temp;

    }

对于数组和
ArrayList
版本,您的
push
方法看起来都是正确的。数组的
pop
看起来不错。但是,
ArrayList的
pop
需要工作

减小
size
,这很好,但尝试添加
temp
(未初始化),这没有意义


您需要调用,它将返回您可以在
pop
方法中返回的必要项。

将该调用取出;在这种情况下,它甚至没有意义。您只需调用
删除
。看起来不错。在访问数组或调用
get
之前是否检查空堆栈,就像您已经在签入
pop
一样?您遗漏了堆栈跟踪中非常重要的部分--异常类型和异常消息。您必须自己调试它;如果没有看到你的
peek
方法,我就不知道为什么会发生这种情况。