如何在java中创建通用堆栈pop方法

如何在java中创建通用堆栈pop方法,java,arrays,generics,stack,Java,Arrays,Generics,Stack,我目前正在一个堆栈项目中工作,我正在创建一个通用堆栈类。我一直在寻找这个堆栈溢出,但找不到它。我需要在代码中创建pop方法的帮助 以下是我到目前为止的情况: public class Stack<E> { public static final int DEFAULT_CAPACITY = 10; private E [] elementData; private int size; @SuppressWarnings("unchecked") public Stack() {

我目前正在一个堆栈项目中工作,我正在创建一个通用堆栈类。我一直在寻找这个堆栈溢出,但找不到它。我需要在代码中创建pop方法的帮助

以下是我到目前为止的情况:

public class Stack<E>
{
public static final int DEFAULT_CAPACITY = 10;
private E [] elementData;
private int size;

@SuppressWarnings("unchecked")
public Stack()
{
    this.elementData = (E[]) new Object[DEFAULT_CAPACITY];
}
@SuppressWarnings("unchecked")
public Stack(int capacity)
{
    if(capacity < 0)
    {
        throw new IllegalArgumentException("capacity " + capacity);
    }
    this.elementData = (E[]) new Object[capacity];
}
public boolean isEmpty()
{
    if(size == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}
/*
The push method should add its parameter to the top of the stack.
*/
public void push(E item)
{
    ensureCapacity(size+1);
    elementData[size] = item;
    size++;
}
private void ensureCapacity(int capacity)
    {
    if(elementData.length < capacity)
    {
        int newCapacity = elementData.length * 2 + 1;
        elementData = Arrays.copyOf(elementData, newCapacity);
    }
}

您需要使返回变量等于堆栈数组的顶部,然后递减堆栈数组。此外,您还需要通过设置size=0来初始化堆栈。

我发现了这一点,我认为@ScaryWombat是一个不错的选择。代码是:

public E pop()
{
    if(isEmpty())
    {
        throw new EmptyStackException();
    }
    else
        {
            return elementData[--size];
    }

}

在实现中,顶部元素始终是数组中最后插入的元素。这应该会给你指明正确的方向。你的
弹出式
应该与你的
推式
@ScaryWombat相反。唯一的问题是,我应该用物品替换什么?你为什么需要替换?只需减小
大小
@ScaryWombat项不在pop方法中,因此如果我执行与推送相反的操作,则该项将位于何处?您需要初始化堆栈。-什么意思?构造器有什么问题吗?你还想先减小
大小
我为没有说得更具体而道歉。。。我第一次尝试帮忙。是的,他确实想先减小尺寸,因为他已经在推它了。这回答了所有问题!谢谢你@ScaryWombat
public E pop()
 {
    E item;

    if(isEmpty())
    {
        throw new EmptyStackException();
    }
    else
    {
        item = elementData[size];
        size--;
    }
    return item;
}
public E pop()
{
    if(isEmpty())
    {
        throw new EmptyStackException();
    }
    else
        {
            return elementData[--size];
    }

}