我正在尝试找到一种方法来向数组添加元素,而不知道在哪里添加它。例如。而不是做这样的事情......
double[] myArray = new double[10];
myArray[5] = 1.0;
我希望能够将元素添加到下一个可用空间。这在Java中甚至可能吗?对不起,如果这是一个简单的问题,我对这门语言很陌生。
答案 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
。