将元素添加到第一个空数组的索引位置

6
我已经创建了一个大小为x的数组。并且想要将元素添加到数组中第一个空索引处。例如,如果数组的大小为10,索引1和2已被占用,则该元素将添加到索引3。

4
你确定应该使用数组,而不是 ArrayList 吗? - user2357112
数组的类型是什么?如果它是原始类型,那么你如何确定 null/empty? - StackFlowed
1
数组是原始类型还是对象类型? - Vishrant
你实际上想要实现什么? - David Conrad
我不能使用ArrayList,它是一个对象类型的数组。 - Jared
4个回答

5

如果数组是一个int数组,你可以这样做:

for(int i=0; i < array.length; i++)
    if(array[i] == 0) {
        array[i] = newValue;
        break;
    }

如果它是一个Object数组,你可以这样做:

for(int i = 0; i < array.length; i++)
    if(array[i] == null) {
        array[i] = newObject;
        break;
    }

1
创建大小为x的数组。
创建大小为x的堆栈,指示所有空闲索引。将所有索引(以相反的顺序)推送到堆栈中。
当您尝试向数组添加元素时,请从堆栈中弹出下一个空闲索引。使用该索引插入数组。
如果删除元素,请将索引推回堆栈以指示其为空,并将数组中的元素置空。
如果要添加元素且堆栈为空,即数组已满,则您可以决定如何处理。

另一种选择是循环遍历数组以查找下一个“空闲”点,该点由null表示。


很遗憾,我不能使用栈。 - Jared
你可以通过另一个数组来实现栈。 - Cratylus

1
在上述回复中,没有在找到第一个空索引后提前终止 for 循环。为避免填充所有空索引,请将 break 语句作为条件语句的一部分添加。
for(int i = 0; i < array.length; i++)
{
    if(array[i] == null)
    {
        array[i] = newObject;
        break;
    }
}

0

循环遍历数组,直到找到零/空值。例如:

int a[] = new int[100];
int x; //Number to be inserted
for(int i=0;i<a.length;i++)
{
   if(a[i]==0)
     a[i]=x;
}

object a[] = new object[100];
int x;
for(int i=0;i<a.length;i++)
{
   if(a[i]==null)
     a[i]= new Integer(x);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接