-1

我有一个数组,我让位置覆盖,但是在数组的末尾有一个“null”有没有办法让这个 null 不在数组中发生以供将来使用?

 public void overwriteArray(int num){        
        if(num > 0 && array != null && num <= array.length) {
           for(int i = num-1; i < array.length-1; i++) {
               array[i] = array[i+1];
        }    arrary[array.length-1] = null; // i want this null to be terminated              
     }
   } 

我想出了使数组更短,删除最后一个地方,但我不知道怎么做,我的想法可以吗?谢谢!

4

1 回答 1

2

无法更改现有数组的长度以使其更短(或更长)。

如果要使用裸数组,那么避免null在数组中留下引用的唯一方法是分配一个具有正确(新)长度的新数组,复制元素,然后使用新数组代替旧数组。您可以直接使用newfor循环来复制元素,也可以使用Arrays.copyOf(...),Arrays.copyOfRange(...)和/或System.arraycopy(...).

有两种选择:

  • 最好的方法是使用List某种类型的 a 而不是数组。这在大多数情况下是可取的,因为它使您的代码更简单。

  • 您可以使用单独的int变量来表示数组中非空元素的数量。

于 2013-09-07T23:51:57.407 回答