Reputation: 159
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
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
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
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
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