I'm trying to figure out how I can remove an element from a normal array (not ArrayList) in Java. I tried by just setting the array at the particular index to null, but that's apparently not what he wanted.

My only other guess is maybe try to create a new array, use arraycopy from starting at 0 until one less than the element being removed, and then then copying the same array from one element after the one being used to the end of the array you just created.

Does order need to be conserved in the array? Because if not, you can simply swap the element to delete with the last element in the array, and cut the last element off (by resizing the array or doing an arraycopy on a new array). This is really efficient but if your array was sorted for instance it will no longer be.

If the order has to be preserved, you want to set the element to delete to null, and bring every element after that down a notch, and then resize the array by one less element (or again, just arraycopy, which is more efficient at this point since block memory copy is faster than walking through the array, but if you have a lot of elements to delete or if you need to go through the array to find which ones to delete, you may be better off sweeping through the array backwards and pushing everything down as needed).

So if you need to delete element at position P in an array of N elements, you would create a new array of N - 1 elements, and:
- arraycopy the first P - 1 elements of the old array into the beginning of the new array
- arraycopy the elements from index P + 1 to N - 1 of the old array into the new array at index P
(assuming zero-based indices)

Edited by Bacterius, 15 September 2012 - 08:28 PM.

“If I understand the standard right it is legal and safe to do this but the resulting value could be anything.”

It also sounds like you want to do things that arrays are not very good at. Have a look at the List interface and some of the implementations. LinkedList or ArrayList could be just what you are looking for. Both support the immensely popular remove(int index) method.