Operations on arrays, primitive arrays (like int[]
) and
* primitive wrapper arrays (like Integer[]
).
This class tries to handle null
input gracefully.
* An exception will not be thrown for a null
* array input. However, an Object array that contains a null
* element may throw an exception. Each method documents its behaviour.
Copies the given array and adds the given element at the end of the new array.
* *The new array contains the same elements of the input * array plus the given element in the last position. The component type of * the new array is the same as that of the input array.
* *If the input array is null
, a new one element array is returned
* whose component type is the same as the element.
* ArrayUtils.add(null, null) = [null] * ArrayUtils.add(null, "a") = ["a"] * ArrayUtils.add(["a"], null) = ["a", null] * ArrayUtils.add(["a"], "b") = ["a", "b"] * ArrayUtils.add(["a", "b"], "c") = ["a", "b", "c"] ** * @param array the array to "add" the element to, may be
null
* @param element the object to add
* @return A new array containing the existing elements plus the new element
* @since 2.1
*/
public static Object[] add(Object[] array, Object element) {
Class type = array != null ? array.getClass() : (element != null ? element.getClass() : Object.class);
Object[] newArray = (Object[]) copyArrayGrow1(array, type);
newArray[newArray.length - 1] = element;
return newArray;
}
/**
* Returns a copy of the given array of size 1 greater than the argument.
* The last value of the array is left to the default value.
*
* @param array The array to copy, must not be null
.
* @param newArrayComponentType If array
is null
, create a
* size 1 array of this type.
* @return A new copy of the array of size 1 greater than the input.
*/
private static Object copyArrayGrow1(Object array, Class newArrayComponentType) {
if (array != null) {
int arrayLength = Array.getLength(array);
Object newArray = Array.newInstance(array.getClass().getComponentType(), arrayLength + 1);
System.arraycopy(array, 0, newArray, 0, arrayLength);
return newArray;
}
return Array.newInstance(newArrayComponentType, 1);
}
}