public E remove(int index)如何从数组中删除索引?

时间:2014-05-21 06:16:31

标签: java arrays

好的,我有这个代码,有人帮我了

public void add(int index, E element)
        if (index < 0 || index >= mList.length){   
            throw new IndexOutOfBoundsException();  // check if index is ok.
        }
        Object[] temp = new Object[mList.length + 1];  // create the new array into temp.
        for (int i = 0, j = 0; j < temp.length; ++i, ++j){  // loop into the array by comparing the first array to the second array's index i&j
            if ( i == index ) {  // check if i is valid
                temp[index] = element;  // insert element into the array
                --i; // decrement original array to cancel out j temp array
            } else {
                temp[j] = mList[i]; // 
            }
        }
        mList = temp;
    }

现在我需要

    public E remove(int index)

我是否需要再次创建临时数组?

我知道有两个数组,我只是在当前数组上做一个for循环吗?

1 个答案:

答案 0 :(得分:0)

如果你想以类似于你的添加的方式去做,那么是的,你需要一个临时数组。

public E remove(int index) {
  Object[] temp = new Object[mList.length + 1];
  for (int i = 0; j < mList.length; ++i) {
    if(i<index) temp[i]=mList[i];
    if(i>index) temp[i-1]=mList[i];
    //N.B. not added if i == index
  }
  mList = temp;
}

总结一下,你不能从阵列中删除元素,你只是不把它添加到新的元素中。

如果您想要更好的解决方案,请查看System.arraycopy()Arrays.copyOf()。试一试,如果遇到困难,请不要回答。

如果您不是强制使用数组,我建议您使用收藏集。例如,List非常适合您的需求。