好的,我有这个代码,有人帮我了
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循环吗?
答案 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非常适合您的需求。