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.
-
4Are you sure you should be using an array, rather than an ArrayList?user2357112– user23571122014-09-18 17:09:03 +00:00Commented Sep 18, 2014 at 17:09
-
What is the type of the array ? if it is primitive types then how would you determine null/empty ?StackFlowed– StackFlowed2014-09-18 17:12:17 +00:00Commented Sep 18, 2014 at 17:12
-
1array is primitive or Object type?Vishrant– Vishrant2014-09-18 17:12:27 +00:00Commented Sep 18, 2014 at 17:12
-
What are you actually trying to achieve?David Conrad– David Conrad2014-09-18 17:22:20 +00:00Commented Sep 18, 2014 at 17:22
-
I can't be using ArrayList, It's an Object type array .Jared– Jared2014-09-18 18:02:44 +00:00Commented Sep 18, 2014 at 18:02
4 Answers
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.
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;
}
}