如何将元素添加到数组中的下一个可用空间?

时间:2011-09-01 10:46:42

标签: java arrays

我正在尝试找到一种方法来向数组添加元素,而不知道在哪里添加它。例如。而不是做这样的事情......

double[] myArray = new double[10];
myArray[5] = 1.0;

我希望能够将元素添加到下一个可用空间。这在Java中甚至可能吗?对不起,如果这是一个简单的问题,我对这门语言很陌生。

3 个答案:

答案 0 :(得分:5)

首先,定义“免费”。你不能寻找第一个零值;如果您实际上将零作为实际值存储,那该怎么办呢。

唯一的方法是跟踪上次插入的位置:

double[] myArray = new double[10];
int nextIndex = 0;

myArray[nextIndex++] = 1234;
... etc

myArray[nextIndex++] = 1.0;

请注意,这是故意简化的。它不能防止运行数组等结束。

您最好的选择是使用 Collection ,例如ArrayList,它会自动扩展 并且很容易添加。

答案 1 :(得分:4)

阵列没有“自由空间”。如果您愿意,可以使用“魔术值”(例如零或null,具体取决于类型)来表示空。然后,您可以在数组中搜索以查找此值:

int i = Array.asList(array).indexOf(0.0);

一些警告:

  • 由于需要扫描阵列,因此速度很慢。
  • 您必须确定魔法值不会作为您希望存储在数组中的元素出现。

如果您只想要一个可以包含可变数量元素的集合,那么请不要使用数组。例如,您可以使用ArrayList及其add方法将元素添加到结尾。

答案 2 :(得分:1)

这对于一组对象引用更有意义,其中null显然意味着“空”。但是,我们假设对于double数组,可能0表示“空”。所以......

int index = -1;
for (int i=0; i<array.length; ++i) {
    if (array[i] == 0) {
        array[i] = 5;
        index = i;
        break; 
    }
}

然后index指向您设置的元素,如果数组已满,则为-1