如何在Java中删除对象Sack实现

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (16)

所以,我正在创建一个名为“Sack”的通用数据结构。在这里我添加项目到一个麻袋,抓取一个随机项目,看它是否为空,或倾倒其内容等。另外我正在创建它以扩展以根据需要保存尽可能多的项目。

remove helper方法应该删除指定索引处的基础数据结构中的项。它应该通过将其替换为底层数组中的“last”元素来实现。它还应确保任何未使用的元素无效。

目前,我正在使用remove方法,我的删除方法遇到了麻烦。我在运行测试时收到错误,说它没有正确的修饰符。因此我的代码是

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

@SuppressWarnings("unchecked")
public Sack()
{
    elementData = (E[]) new Object[DEFAULT_CAPACITY];
}
@SuppressWarnings("unchecked")
public Sack(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;
    }
}
  public E [] dump()
{
   E [] E2 = Arrays.copyOf(elementData, size);
   for(int i = 0; i < size; i++)
   {
      elementData[i] = null;

   }
   size = 0;
    return E2;
}

我在此处收到错误

 public void remove(int index)
{
    for (int i = index; i < size; i++)
    {
        elementData[i] = elementData[i + 1];
    }
    size--;
}
}

它期望获得的价值是2,但它收到的是1.下载任何确保这一点的方法。

提问于
用户回答回答于

尝试将其替换为:

public void remove(int index)
{
    if(index >= 0) {
     E last = elementData[size - 1];
     elementData[index] = last;
     size--;
    }
}

扫码关注云+社区

领取腾讯云代金券