Java 将堆栈从数组转换为arrayList
我有一个使用数组的堆栈实现,我正在尝试将其转换为数组列表。数组位于顶部,arrayList位于底部。这两段代码做的是相同的事情吗?我还有两段pop方法,一个数组和一个数组列表。但对于这一个,我得到一个错误,temp尚未初始化,无法找到符号temp。谢谢你的帮助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();
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
方法,我就不知道为什么会发生这种情况。