我有一个数组,我有一个方法可以删除数组中的项目。因此我们可以删除数组索引 5 中的任何内容。然后索引 5 将保留为空,从而导致问题。我的目标是能够将所有值向左移动,然后删除该空闲空间,使其成为正确的数组大小。这意味着我们不会在数组中有任何空值。
我的尝试:
for (int j = 0; j< myArray.length; j++){
if (myArray[j] == null){
myArray[j] =MyArray[j+1];
break;
}
}
由于显而易见的原因,这不起作用。我知道我哪里错了。我正在用数组中的下一个值替换空值。所以我在数组中给出了两个彼此相邻的相同值。这显然不是我想要的。但是,我似乎无法弄清楚该怎么做。有人告诉我我没有足够地遍历数组。有什么建议/建议吗?
谢谢
最佳答案
首先统计数组中非空元素的个数:
int numOfElements = 0;
for (int i=0; i<myArray.length; i++)
if (myArray[i] != null)
numOfElements++;
然后,分配一个新的(可能更小的)数组:
Type[] myNewArray = new Type[numOfElements];
// Replace 'Type' with the type of your array
最后,将所有非空元素复制到新数组中:
for (int i=0,j=0; i<myArray.length; i++)
if (myArray[i] != null)
myNewArray[j++] = myArray[i];
如果有必要,那么此时你可以设置myArray = myNewArray
。
关于java - 移动值以清除数组中的空间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23299407/