Jared
Jared

Reputation: 159

Adding an element to the first empty array's index

I've created an array of size x . And want to add an element to the first empty index in the array .For example , if the array's size is 10 and indexes 1 and 2 are taken, then the element is added to index 3.

Upvotes: 6

Views: 54726

Answers (4)

gkrls
gkrls

Reputation: 2664

If the array is an int array you can do

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

if it is an Object array you can do

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

Upvotes: 5

John K
John K

Reputation: 59

In the responses above, there is no early termination of the for-loop after the first empty index is found. To avoid all empty indexes being populated, add a break statement as part of the conditional statement.

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

Upvotes: 1

Cratylus
Cratylus

Reputation: 54094

Create the array of size x.
Create a stack of size x which indicates all free indexes. Push all indexes (in reverse order) to the stack.
When you try to add an element to the array pop from the stack the next free index. Use the index to insert to the array.
If an element is removed, push the index back to the stack to indicate that it is free and nullify the element in the array.
If you want to add an element and the stack is empty i.e. the array is full, well you decide what to do.

Your other option would be to loop over the array to find the next "free" spot which would be indicated by a null.

Upvotes: 1

subham soni
subham soni

Reputation: 274

Loop through the array until you find zero/null. For example,

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);
}

Upvotes: 0

Related Questions