You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ba...@apache.org on 2004/06/06 05:53:24 UTC
cvs commit: jakarta-commons/lang/src/test/org/apache/commons/lang ArrayUtilsRemoveTest.java ArrayUtilsTest.java
bayard 2004/06/05 20:53:24
Modified: lang/src/java/org/apache/commons/lang ArrayUtils.java
lang/src/test/org/apache/commons/lang ArrayUtilsTest.java
Added: lang/src/test/org/apache/commons/lang
ArrayUtilsRemoveTest.java
Log:
applied patch #27778, also added an indexOf(char[]..).
Revision Changes Path
1.44 +725 -1 jakarta-commons/lang/src/java/org/apache/commons/lang/ArrayUtils.java
Index: ArrayUtils.java
===================================================================
RCS file: /home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/ArrayUtils.java,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- ArrayUtils.java 16 Mar 2004 01:40:57 -0000 1.43
+++ ArrayUtils.java 6 Jun 2004 03:53:23 -0000 1.44
@@ -1626,6 +1626,109 @@
return (indexOf(array, valueToFind) != -1);
}
+ // char IndexOf
+ //-----------------------------------------------------------------------
+ /**
+ * <p>Find the index of the given value in the array.</p>
+ *
+ * <p>This method returns <code>-1</code> if <code>null</code> array input.</p>
+ *
+ * @param array the array to search through for the object, may be <code>null</code>
+ * @param valueToFind the value to find
+ * @return the index of the value within the array,
+ * <code>-1</code> if not found or <code>null</code> array input
+ */
+ public static int indexOf(final char[] array, final char valueToFind) {
+ return indexOf(array, valueToFind, 0);
+ }
+
+ /**
+ * <p>Find the index of the given value in the array starting at the given index.</p>
+ *
+ * <p>This method returns <code>-1</code> if <code>null</code> array input.</p>
+ *
+ * <p>A negative startIndex is treated as zero. A startIndex larger than the array
+ * length will return -1.</p>
+ *
+ * @param array the array to search through for the object, may be <code>null</code>
+ * @param valueToFind the value to find
+ * @param startIndex the index to start searching at
+ * @return the index of the value within the array,
+ * <code>-1</code> if not found or <code>null</code> array input
+ */
+ public static int indexOf(final char[] array, final char valueToFind, int startIndex) {
+ if (array == null) {
+ return -1;
+ }
+ if (startIndex < 0) {
+ startIndex = 0;
+ }
+ for (int i = startIndex; i < array.length; i++) {
+ if (valueToFind == array[i]) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ /**
+ * <p>Find the last index of the given value within the array.</p>
+ *
+ * <p>This method returns <code>-1</code> if <code>null</code> array input.</p>
+ *
+ * @param array the array to travers backwords looking for the object, may be <code>null</code>
+ * @param valueToFind the object to find
+ * @return the last index of the value within the array,
+ * <code>-1</code> if not found or <code>null</code> array input
+ */
+ public static int lastIndexOf(final char[] array, final char valueToFind) {
+ return lastIndexOf(array, valueToFind, Integer.MAX_VALUE);
+ }
+
+ /**
+ * <p>Find the last index of the given value in the array starting at the given index.</p>
+ *
+ * <p>This method returns <code>-1</code> if <code>null</code> array input.</p>
+ *
+ * <p>A negative startIndex will return -1. A startIndex larger than the array
+ * length will search from the end of the array.</p>
+ *
+ * @param array the array to traverse for looking for the object, may be <code>null</code>
+ * @param valueToFind the value to find
+ * @param startIndex the start index to travers backwards from
+ * @return the last index of the value within the array,
+ * <code>-1</code> if not found or <code>null</code> array input
+ */
+ public static int lastIndexOf(final char[] array, final char valueToFind, int startIndex) {
+ if (array == null) {
+ return -1;
+ }
+ if (startIndex < 0) {
+ return -1;
+ } else if (startIndex >= array.length) {
+ startIndex = array.length - 1;
+ }
+ for (int i = startIndex; i >= 0; i--) {
+ if (valueToFind == array[i]) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ /**
+ * <p>Checks if the value is in the given array.</p>
+ *
+ * <p>The method returns <code>false</code> if a <code>null</code> array is passed in.</p>
+ *
+ * @param array the array to search through
+ * @param valueToFind the value to find
+ * @return <code>true</code> if the array contains the object
+ */
+ public static boolean contains(final char[] array, final char valueToFind) {
+ return (indexOf(array, valueToFind) != -1);
+ }
+
// byte IndexOf
//-----------------------------------------------------------------------
/**
@@ -3113,6 +3216,627 @@
System.arraycopy(array, index, result, index + 1, length - index);
}
return (Object[]) result;
+ }
+
+ /**
+ * <p>Removes the element at the specified position from the specified array.
+ * All subsequent elements are shifted to the left (substracts one from
+ * their indices).</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the element on the specified position. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <p>If the input array is <code>null</code>, an IndexOutOfBoundsException
+ * will be thrown, because in that case no valid index can be specified.</p>
+ *
+ * <pre>
+ * ArrayUtils.remove(["a"], 0) = []
+ * ArrayUtils.remove(["a", "b"], 0) = ["b"]
+ * ArrayUtils.remove(["a", "b"], 1) = ["a"]
+ * ArrayUtils.remove(["a", "b", "c"], 1) = ["a", "c"]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may not be <code>null</code>
+ * @param index the position of the element to be removed
+ * @return A new array containing the existing elements except the element
+ * at the specified position.
+ * @throws IndexOutOfBoundsException if the index is out of range
+ * (index < 0 || index >= array.length), or if the array is <code>null</code>.
+ * @since 2.1
+ */
+ public static Object[] remove(final Object[] array, final int index) {
+ return (Object[]) remove((Object) array, index);
+ }
+
+ /**
+ * <p>Removes the first occurrence of the specified element from the
+ * specified array. All subsequent elements are shifted to the left
+ * (substracts one from their indices). If the array doesn't contains
+ * such an element, no elements are removed from the array.</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the first occurrence of the specified element. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <pre>
+ * ArrayUtils.removeElement(null, "a") = null
+ * ArrayUtils.removeElement([], "a") = []
+ * ArrayUtils.removeElement(["a"], "b") = ["a"]
+ * ArrayUtils.removeElement(["a", "b"], "a") = ["b"]
+ * ArrayUtils.removeElement(["a", "b", "a"], "a") = ["b", "a"]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may be <code>null</code>
+ * @param element the element to be removed
+ * @return A new array containing the existing elements except the first
+ * occurrence of the specified element.
+ * @since 2.1
+ */
+ public static Object[] removeElement(final Object[] array, final Object element) {
+ int index = indexOf(array, element);
+ if (index == -1) {
+ return clone(array);
+ }
+ return remove(array, index);
+ }
+
+ /**
+ * <p>Removes the element at the specified position from the specified array.
+ * All subsequent elements are shifted to the left (substracts one from
+ * their indices).</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the element on the specified position. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <p>If the input array is <code>null</code>, an IndexOutOfBoundsException
+ * will be thrown, because in that case no valid index can be specified.</p>
+ *
+ * <pre>
+ * ArrayUtils.remove([true], 0) = []
+ * ArrayUtils.remove([true, false], 0) = [false]
+ * ArrayUtils.remove([true, false], 1) = [true]
+ * ArrayUtils.remove([true, true, false], 1) = [true, false]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may not be <code>null</code>
+ * @param index the position of the element to be removed
+ * @return A new array containing the existing elements except the element
+ * at the specified position.
+ * @throws IndexOutOfBoundsException if the index is out of range
+ * (index < 0 || index >= array.length), or if the array is <code>null</code>.
+ * @since 2.1
+ */
+ public static boolean[] remove(final boolean[] array, final int index) {
+ return (boolean[]) remove((Object) array, index);
+ }
+
+ /**
+ * <p>Removes the first occurrence of the specified element from the
+ * specified array. All subsequent elements are shifted to the left
+ * (substracts one from their indices). If the array doesn't contains
+ * such an element, no elements are removed from the array.</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the first occurrence of the specified element. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <pre>
+ * ArrayUtils.removeElement(null, true) = null
+ * ArrayUtils.removeElement([], true) = []
+ * ArrayUtils.removeElement([true], false) = [true]
+ * ArrayUtils.removeElement([true, false], false) = [true]
+ * ArrayUtils.removeElement([true, false, true], true) = [false, true]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may be <code>null</code>
+ * @param element the element to be removed
+ * @return A new array containing the existing elements except the first
+ * occurrence of the specified element.
+ * @since 2.1
+ */
+ public static boolean[] removeElement(final boolean[] array, final boolean element) {
+ int index = indexOf(array, element);
+ if (index == -1) {
+ return clone(array);
+ }
+ return remove(array, index);
+ }
+
+ /**
+ * <p>Removes the element at the specified position from the specified array.
+ * All subsequent elements are shifted to the left (substracts one from
+ * their indices).</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the element on the specified position. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <p>If the input array is <code>null</code>, an IndexOutOfBoundsException
+ * will be thrown, because in that case no valid index can be specified.</p>
+ *
+ * <pre>
+ * ArrayUtils.remove([1], 0) = []
+ * ArrayUtils.remove([1, 0], 0) = [0]
+ * ArrayUtils.remove([1, 0], 1) = [1]
+ * ArrayUtils.remove([1, 0, 1], 1) = [1, 1]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may not be <code>null</code>
+ * @param index the position of the element to be removed
+ * @return A new array containing the existing elements except the element
+ * at the specified position.
+ * @throws IndexOutOfBoundsException if the index is out of range
+ * (index < 0 || index >= array.length), or if the array is <code>null</code>.
+ * @since 2.1
+ */
+ public static byte[] remove(final byte[] array, final int index) {
+ return (byte[]) remove((Object) array, index);
+ }
+
+ /**
+ * <p>Removes the first occurrence of the specified element from the
+ * specified array. All subsequent elements are shifted to the left
+ * (substracts one from their indices). If the array doesn't contains
+ * such an element, no elements are removed from the array.</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the first occurrence of the specified element. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <pre>
+ * ArrayUtils.removeElement(null, 1) = null
+ * ArrayUtils.removeElement([], 1) = []
+ * ArrayUtils.removeElement([1], 0) = [1]
+ * ArrayUtils.removeElement([1, 0], 0) = [1]
+ * ArrayUtils.removeElement([1, 0, 1], 1) = [0, 1]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may be <code>null</code>
+ * @param element the element to be removed
+ * @return A new array containing the existing elements except the first
+ * occurrence of the specified element.
+ * @since 2.1
+ */
+ public static byte[] removeElement(final byte[] array, final byte element) {
+ int index = indexOf(array, element);
+ if (index == -1) {
+ return clone(array);
+ }
+ return remove(array, index);
+ }
+
+ /**
+ * <p>Removes the element at the specified position from the specified array.
+ * All subsequent elements are shifted to the left (substracts one from
+ * their indices).</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the element on the specified position. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <p>If the input array is <code>null</code>, an IndexOutOfBoundsException
+ * will be thrown, because in that case no valid index can be specified.</p>
+ *
+ * <pre>
+ * ArrayUtils.remove(['a'], 0) = []
+ * ArrayUtils.remove(['a', 'b'], 0) = ['b']
+ * ArrayUtils.remove(['a', 'b'], 1) = ['a']
+ * ArrayUtils.remove(['a', 'b', 'c'], 1) = ['a', 'c']
+ * </pre>
+ *
+ * @param array the array to remove the element from, may not be <code>null</code>
+ * @param index the position of the element to be removed
+ * @return A new array containing the existing elements except the element
+ * at the specified position.
+ * @throws IndexOutOfBoundsException if the index is out of range
+ * (index < 0 || index >= array.length), or if the array is <code>null</code>.
+ * @since 2.1
+ */
+ public static char[] remove(final char[] array, final int index) {
+ return (char[]) remove((Object) array, index);
+ }
+
+ /**
+ * <p>Removes the first occurrence of the specified element from the
+ * specified array. All subsequent elements are shifted to the left
+ * (substracts one from their indices). If the array doesn't contains
+ * such an element, no elements are removed from the array.</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the first occurrence of the specified element. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <pre>
+ * ArrayUtils.removeElement(null, 'a') = null
+ * ArrayUtils.removeElement([], 'a') = []
+ * ArrayUtils.removeElement(['a'], 'b') = ['a']
+ * ArrayUtils.removeElement(['a', 'b'], 'a') = ['b']
+ * ArrayUtils.removeElement(['a', 'b', 'a'], 'a') = ['b', 'a']
+ * </pre>
+ *
+ * @param array the array to remove the element from, may be <code>null</code>
+ * @param element the element to be removed
+ * @return A new array containing the existing elements except the first
+ * occurrence of the specified element.
+ * @since 2.1
+ */
+ public static char[] removeElement(final char[] array, final char element) {
+ int index = indexOf(array, element);
+ if (index == -1) {
+ return clone(array);
+ }
+ return remove(array, index);
+ }
+
+ /**
+ * <p>Removes the element at the specified position from the specified array.
+ * All subsequent elements are shifted to the left (substracts one from
+ * their indices).</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the element on the specified position. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <p>If the input array is <code>null</code>, an IndexOutOfBoundsException
+ * will be thrown, because in that case no valid index can be specified.</p>
+ *
+ * <pre>
+ * ArrayUtils.remove([1.1], 0) = []
+ * ArrayUtils.remove([2.5, 6.0], 0) = [6.0]
+ * ArrayUtils.remove([2.5, 6.0], 1) = [2.5]
+ * ArrayUtils.remove([2.5, 6.0, 3.8], 1) = [2.5, 3.8]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may not be <code>null</code>
+ * @param index the position of the element to be removed
+ * @return A new array containing the existing elements except the element
+ * at the specified position.
+ * @throws IndexOutOfBoundsException if the index is out of range
+ * (index < 0 || index >= array.length), or if the array is <code>null</code>.
+ * @since 2.1
+ */
+ public static double[] remove(final double[] array, final int index) {
+ return (double[]) remove((Object) array, index);
+ }
+
+ /**
+ * <p>Removes the first occurrence of the specified element from the
+ * specified array. All subsequent elements are shifted to the left
+ * (substracts one from their indices). If the array doesn't contains
+ * such an element, no elements are removed from the array.</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the first occurrence of the specified element. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <pre>
+ * ArrayUtils.removeElement(null, 1.1) = null
+ * ArrayUtils.removeElement([], 1.1) = []
+ * ArrayUtils.removeElement([1.1], 1.2) = [1.1]
+ * ArrayUtils.removeElement([1.1, 2.3], 1.1) = [2.3]
+ * ArrayUtils.removeElement([1.1, 2.3, 1.1], 1.1) = [2.3, 1.1]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may be <code>null</code>
+ * @param element the element to be removed
+ * @return A new array containing the existing elements except the first
+ * occurrence of the specified element.
+ * @since 2.1
+ */
+ public static double[] removeElement(final double[] array, final double element) {
+ int index = indexOf(array, element);
+ if (index == -1) {
+ return clone(array);
+ }
+ return remove(array, index);
+ }
+
+ /**
+ * <p>Removes the element at the specified position from the specified array.
+ * All subsequent elements are shifted to the left (substracts one from
+ * their indices).</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the element on the specified position. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <p>If the input array is <code>null</code>, an IndexOutOfBoundsException
+ * will be thrown, because in that case no valid index can be specified.</p>
+ *
+ * <pre>
+ * ArrayUtils.remove([1.1], 0) = []
+ * ArrayUtils.remove([2.5, 6.0], 0) = [6.0]
+ * ArrayUtils.remove([2.5, 6.0], 1) = [2.5]
+ * ArrayUtils.remove([2.5, 6.0, 3.8], 1) = [2.5, 3.8]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may not be <code>null</code>
+ * @param index the position of the element to be removed
+ * @return A new array containing the existing elements except the element
+ * at the specified position.
+ * @throws IndexOutOfBoundsException if the index is out of range
+ * (index < 0 || index >= array.length), or if the array is <code>null</code>.
+ * @since 2.1
+ */
+ public static float[] remove(final float[] array, final int index) {
+ return (float[]) remove((Object) array, index);
+ }
+
+ /**
+ * <p>Removes the first occurrence of the specified element from the
+ * specified array. All subsequent elements are shifted to the left
+ * (substracts one from their indices). If the array doesn't contains
+ * such an element, no elements are removed from the array.</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the first occurrence of the specified element. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <pre>
+ * ArrayUtils.removeElement(null, 1.1) = null
+ * ArrayUtils.removeElement([], 1.1) = []
+ * ArrayUtils.removeElement([1.1], 1.2) = [1.1]
+ * ArrayUtils.removeElement([1.1, 2.3], 1.1) = [2.3]
+ * ArrayUtils.removeElement([1.1, 2.3, 1.1], 1.1) = [2.3, 1.1]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may be <code>null</code>
+ * @param element the element to be removed
+ * @return A new array containing the existing elements except the first
+ * occurrence of the specified element.
+ * @since 2.1
+ */
+ public static float[] removeElement(final float[] array, final float element) {
+ int index = indexOf(array, element);
+ if (index == -1) {
+ return clone(array);
+ }
+ return remove(array, index);
+ }
+
+ /**
+ * <p>Removes the element at the specified position from the specified array.
+ * All subsequent elements are shifted to the left (substracts one from
+ * their indices).</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the element on the specified position. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <p>If the input array is <code>null</code>, an IndexOutOfBoundsException
+ * will be thrown, because in that case no valid index can be specified.</p>
+ *
+ * <pre>
+ * ArrayUtils.remove([1], 0) = []
+ * ArrayUtils.remove([2, 6], 0) = [6]
+ * ArrayUtils.remove([2, 6], 1) = [2]
+ * ArrayUtils.remove([2, 6, 3], 1) = [2, 3]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may not be <code>null</code>
+ * @param index the position of the element to be removed
+ * @return A new array containing the existing elements except the element
+ * at the specified position.
+ * @throws IndexOutOfBoundsException if the index is out of range
+ * (index < 0 || index >= array.length), or if the array is <code>null</code>.
+ * @since 2.1
+ */
+ public static int[] remove(final int[] array, final int index) {
+ return (int[]) remove((Object) array, index);
+ }
+
+ /**
+ * <p>Removes the first occurrence of the specified element from the
+ * specified array. All subsequent elements are shifted to the left
+ * (substracts one from their indices). If the array doesn't contains
+ * such an element, no elements are removed from the array.</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the first occurrence of the specified element. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <pre>
+ * ArrayUtils.removeElement(null, 1) = null
+ * ArrayUtils.removeElement([], 1) = []
+ * ArrayUtils.removeElement([1], 2) = [1]
+ * ArrayUtils.removeElement([1, 3], 1) = [3]
+ * ArrayUtils.removeElement([1, 3, 1], 1) = [3, 1]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may be <code>null</code>
+ * @param element the element to be removed
+ * @return A new array containing the existing elements except the first
+ * occurrence of the specified element.
+ * @since 2.1
+ */
+ public static int[] removeElement(final int[] array, final int element) {
+ int index = indexOf(array, element);
+ if (index == -1) {
+ return clone(array);
+ }
+ return remove(array, index);
+ }
+
+ /**
+ * <p>Removes the element at the specified position from the specified array.
+ * All subsequent elements are shifted to the left (substracts one from
+ * their indices).</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the element on the specified position. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <p>If the input array is <code>null</code>, an IndexOutOfBoundsException
+ * will be thrown, because in that case no valid index can be specified.</p>
+ *
+ * <pre>
+ * ArrayUtils.remove([1], 0) = []
+ * ArrayUtils.remove([2, 6], 0) = [6]
+ * ArrayUtils.remove([2, 6], 1) = [2]
+ * ArrayUtils.remove([2, 6, 3], 1) = [2, 3]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may not be <code>null</code>
+ * @param index the position of the element to be removed
+ * @return A new array containing the existing elements except the element
+ * at the specified position.
+ * @throws IndexOutOfBoundsException if the index is out of range
+ * (index < 0 || index >= array.length), or if the array is <code>null</code>.
+ * @since 2.1
+ */
+ public static long[] remove(final long[] array, final int index) {
+ return (long[]) remove((Object) array, index);
+ }
+
+ /**
+ * <p>Removes the first occurrence of the specified element from the
+ * specified array. All subsequent elements are shifted to the left
+ * (substracts one from their indices). If the array doesn't contains
+ * such an element, no elements are removed from the array.</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the first occurrence of the specified element. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <pre>
+ * ArrayUtils.removeElement(null, 1) = null
+ * ArrayUtils.removeElement([], 1) = []
+ * ArrayUtils.removeElement([1], 2) = [1]
+ * ArrayUtils.removeElement([1, 3], 1) = [3]
+ * ArrayUtils.removeElement([1, 3, 1], 1) = [3, 1]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may be <code>null</code>
+ * @param element the element to be removed
+ * @return A new array containing the existing elements except the first
+ * occurrence of the specified element.
+ * @since 2.1
+ */
+ public static long[] removeElement(final long[] array, final long element) {
+ int index = indexOf(array, element);
+ if (index == -1) {
+ return clone(array);
+ }
+ return remove(array, index);
+ }
+
+ /**
+ * <p>Removes the element at the specified position from the specified array.
+ * All subsequent elements are shifted to the left (substracts one from
+ * their indices).</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the element on the specified position. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <p>If the input array is <code>null</code>, an IndexOutOfBoundsException
+ * will be thrown, because in that case no valid index can be specified.</p>
+ *
+ * <pre>
+ * ArrayUtils.remove([1], 0) = []
+ * ArrayUtils.remove([2, 6], 0) = [6]
+ * ArrayUtils.remove([2, 6], 1) = [2]
+ * ArrayUtils.remove([2, 6, 3], 1) = [2, 3]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may not be <code>null</code>
+ * @param index the position of the element to be removed
+ * @return A new array containing the existing elements except the element
+ * at the specified position.
+ * @throws IndexOutOfBoundsException if the index is out of range
+ * (index < 0 || index >= array.length), or if the array is <code>null</code>.
+ * @since 2.1
+ */
+ public static short[] remove(final short[] array, final int index) {
+ return (short[]) remove((Object) array, index);
+ }
+
+ /**
+ * <p>Removes the first occurrence of the specified element from the
+ * specified array. All subsequent elements are shifted to the left
+ * (substracts one from their indices). If the array doesn't contains
+ * such an element, no elements are removed from the array.</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the first occurrence of the specified element. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <pre>
+ * ArrayUtils.removeElement(null, 1) = null
+ * ArrayUtils.removeElement([], 1) = []
+ * ArrayUtils.removeElement([1], 2) = [1]
+ * ArrayUtils.removeElement([1, 3], 1) = [3]
+ * ArrayUtils.removeElement([1, 3, 1], 1) = [3, 1]
+ * </pre>
+ *
+ * @param array the array to remove the element from, may be <code>null</code>
+ * @param element the element to be removed
+ * @return A new array containing the existing elements except the first
+ * occurrence of the specified element.
+ * @since 2.1
+ */
+ public static short[] removeElement(final short[] array, final short element) {
+ int index = indexOf(array, element);
+ if (index == -1) {
+ return clone(array);
+ }
+ return remove(array, index);
+ }
+
+ /**
+ * <p>Removes the element at the specified position from the specified array.
+ * All subsequent elements are shifted to the left (substracts one from
+ * their indices).</p>
+ *
+ * <p>This method returns a new array with the same elements of the input
+ * array except the element on the specified position. The component
+ * type of the returned array is always the same as that of the input
+ * array.</p>
+ *
+ * <p>If the input array is <code>null</code>, an IndexOutOfBoundsException
+ * will be thrown, because in that case no valid index can be specified.</p>
+ *
+ * @param array the array to remove the element from, may not be <code>null</code>
+ * @param index the position of the element to be removed
+ * @return A new array containing the existing elements except the element
+ * at the specified position.
+ * @throws IndexOutOfBoundsException if the index is out of range
+ * (index < 0 || index >= array.length), or if the array is <code>null</code>.
+ * @since 2.1
+ */
+ private static Object remove(final Object array, final int index) {
+ int length = getLength(array);
+ if (index < 0 || index >= length) {
+ throw new IndexOutOfBoundsException("Index: " + index + ", Length: " + length);
+ }
+
+ Object result = Array.newInstance(array.getClass().getComponentType(), length - 1);
+ System.arraycopy(array, 0, result, 0, index);
+ if (index < length - 1) {
+ System.arraycopy(array, index + 1, result, index, length - index - 1);
+ }
+
+ return result;
}
}
1.27 +61 -1 jakarta-commons/lang/src/test/org/apache/commons/lang/ArrayUtilsTest.java
Index: ArrayUtilsTest.java
===================================================================
RCS file: /home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/ArrayUtilsTest.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- ArrayUtilsTest.java 18 Feb 2004 23:06:19 -0000 1.26
+++ ArrayUtilsTest.java 6 Jun 2004 03:53:24 -0000 1.27
@@ -1543,6 +1543,66 @@
}
//-----------------------------------------------------------------------
+ public void testIndexOfChar() {
+ char[] array = null;
+ assertEquals(-1, ArrayUtils.indexOf(array, 'a'));
+ array = new char[] { 'a', 'b', 'c', 'd', 'a' };
+ assertEquals(0, ArrayUtils.indexOf(array, 'a'));
+ assertEquals(1, ArrayUtils.indexOf(array, 'b'));
+ assertEquals(2, ArrayUtils.indexOf(array, 'c'));
+ assertEquals(3, ArrayUtils.indexOf(array, 'd'));
+ assertEquals(-1, ArrayUtils.indexOf(array, 'e'));
+ }
+
+ public void testIndexOfCharWithStartIndex() {
+ char[] array = null;
+ assertEquals(-1, ArrayUtils.indexOf(array, 'a', 2));
+ array = new char[] { 'a', 'b', 'c', 'd', 'a' };
+ assertEquals(4, ArrayUtils.indexOf(array, 'a', 2));
+ assertEquals(-1, ArrayUtils.indexOf(array, 'b', 2));
+ assertEquals(2, ArrayUtils.indexOf(array, 'c', 2));
+ assertEquals(3, ArrayUtils.indexOf(array, 'd', 2));
+ assertEquals(3, ArrayUtils.indexOf(array, 'd', -1));
+ assertEquals(-1, ArrayUtils.indexOf(array, 'e', 0));
+ assertEquals(-1, ArrayUtils.indexOf(array, 'a', 6));
+ }
+
+ public void testLastIndexOfChar() {
+ char[] array = null;
+ assertEquals(-1, ArrayUtils.lastIndexOf(array, 'a'));
+ array = new char[] { 'a', 'b', 'c', 'd', 'a' };
+ assertEquals(4, ArrayUtils.lastIndexOf(array, 'a'));
+ assertEquals(1, ArrayUtils.lastIndexOf(array, 'b'));
+ assertEquals(2, ArrayUtils.lastIndexOf(array, 'c'));
+ assertEquals(3, ArrayUtils.lastIndexOf(array, 'd'));
+ assertEquals(-1, ArrayUtils.lastIndexOf(array, 'e'));
+ }
+
+ public void testLastIndexOfCharWithStartIndex() {
+ char[] array = null;
+ assertEquals(-1, ArrayUtils.lastIndexOf(array, 'a', 2));
+ array = new char[] { 'a', 'b', 'c', 'd', 'a' };
+ assertEquals(0, ArrayUtils.lastIndexOf(array, 'a', 2));
+ assertEquals(1, ArrayUtils.lastIndexOf(array, 'b', 2));
+ assertEquals(2, ArrayUtils.lastIndexOf(array, 'c', 2));
+ assertEquals(-1, ArrayUtils.lastIndexOf(array, 'd', 2));
+ assertEquals(-1, ArrayUtils.lastIndexOf(array, 'd', -1));
+ assertEquals(-1, ArrayUtils.lastIndexOf(array, 'e'));
+ assertEquals(4, ArrayUtils.lastIndexOf(array, 'a', 88));
+ }
+
+ public void testContainsChar() {
+ char[] array = null;
+ assertEquals(false, ArrayUtils.contains(array, 'b'));
+ array = new char[] { 'a', 'b', 'c', 'd', 'a' };
+ assertEquals(true, ArrayUtils.contains(array, 'a'));
+ assertEquals(true, ArrayUtils.contains(array, 'b'));
+ assertEquals(true, ArrayUtils.contains(array, 'c'));
+ assertEquals(true, ArrayUtils.contains(array, 'd'));
+ assertEquals(false, ArrayUtils.contains(array, 'e'));
+ }
+
+ //-----------------------------------------------------------------------
public void testIndexOfByte() {
byte[] array = null;
assertEquals(-1, ArrayUtils.indexOf(array, (byte) 0));
1.1 jakarta-commons/lang/src/test/org/apache/commons/lang/ArrayUtilsRemoveTest.java
Index: ArrayUtilsRemoveTest.java
===================================================================
/*
* Copyright 2002-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.lang;
import java.util.Arrays;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
/**
* Tests ArrayUtils remove and removeElement methods.
*
* @author Maarten Coene
* @version $Id: ArrayUtilsRemoveTest.java,v 1.1 2004/06/06 03:53:24 bayard Exp $
*/
public class ArrayUtilsRemoveTest extends TestCase {
public static void main(String[] args) {
TestRunner.run(suite());
}
public static Test suite() {
TestSuite suite = new TestSuite(ArrayUtilsRemoveTest.class);
suite.setName("ArrayUtils remove Tests");
return suite;
}
public void testRemoveObjectArray() {
Object[] array;
array = ArrayUtils.remove(new Object[] {"a"}, 0);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_OBJECT_ARRAY, array));
assertEquals(Object.class, array.getClass().getComponentType());
array = ArrayUtils.remove(new Object[] {"a", "b"}, 0);
assertTrue(Arrays.equals(new Object[] {"b"}, array));
assertEquals(Object.class, array.getClass().getComponentType());
array = ArrayUtils.remove(new Object[] {"a", "b"}, 1);
assertTrue(Arrays.equals(new Object[] {"a"}, array));
assertEquals(Object.class, array.getClass().getComponentType());
array = ArrayUtils.remove(new Object[] {"a", "b", "c"}, 1);
assertTrue(Arrays.equals(new Object[] {"a", "c"}, array));
assertEquals(Object.class, array.getClass().getComponentType());
try {
ArrayUtils.remove(new Object[] {"a", "b"}, -1);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove(new Object[] {"a", "b"}, 2);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove((Object[]) null, 0);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
}
public void testRemoveBooleanArray() {
boolean[] array;
array = ArrayUtils.remove(new boolean[] {true}, 0);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_BOOLEAN_ARRAY, array));
assertEquals(Boolean.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new boolean[] {true, false}, 0);
assertTrue(Arrays.equals(new boolean[] {false}, array));
assertEquals(Boolean.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new boolean[] {true, false}, 1);
assertTrue(Arrays.equals(new boolean[] {true}, array));
assertEquals(Boolean.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new boolean[] {true, false, true}, 1);
assertTrue(Arrays.equals(new boolean[] {true, true}, array));
assertEquals(Boolean.TYPE, array.getClass().getComponentType());
try {
ArrayUtils.remove(new boolean[] {true, false}, -1);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove(new boolean[] {true, false}, 2);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove((boolean[]) null, 0);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
}
public void testRemoveByteArray() {
byte[] array;
array = ArrayUtils.remove(new byte[] {1}, 0);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_BYTE_ARRAY, array));
assertEquals(Byte.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new byte[] {1, 2}, 0);
assertTrue(Arrays.equals(new byte[] {2}, array));
assertEquals(Byte.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new byte[] {1, 2}, 1);
assertTrue(Arrays.equals(new byte[] {1}, array));
assertEquals(Byte.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new byte[] {1, 2, 1}, 1);
assertTrue(Arrays.equals(new byte[] {1, 1}, array));
assertEquals(Byte.TYPE, array.getClass().getComponentType());
try {
ArrayUtils.remove(new byte[] {1, 2}, -1);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove(new byte[] {1, 2}, 2);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove((byte[]) null, 0);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
}
public void testRemoveCharArray() {
char[] array;
array = ArrayUtils.remove(new char[] {'a'}, 0);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_CHAR_ARRAY, array));
assertEquals(Character.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new char[] {'a', 'b'}, 0);
assertTrue(Arrays.equals(new char[] {'b'}, array));
assertEquals(Character.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new char[] {'a', 'b'}, 1);
assertTrue(Arrays.equals(new char[] {'a'}, array));
assertEquals(Character.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new char[] {'a', 'b', 'c'}, 1);
assertTrue(Arrays.equals(new char[] {'a', 'c'}, array));
assertEquals(Character.TYPE, array.getClass().getComponentType());
try {
ArrayUtils.remove(new char[] {'a', 'b'}, -1);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove(new char[] {'a', 'b'}, 2);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove((char[]) null, 0);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
}
public void testRemoveDoubleArray() {
double[] array;
array = ArrayUtils.remove(new double[] {1}, 0);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_DOUBLE_ARRAY, array));
assertEquals(Double.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new double[] {1, 2}, 0);
assertTrue(Arrays.equals(new double[] {2}, array));
assertEquals(Double.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new double[] {1, 2}, 1);
assertTrue(Arrays.equals(new double[] {1}, array));
assertEquals(Double.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new double[] {1, 2, 1}, 1);
assertTrue(Arrays.equals(new double[] {1, 1}, array));
assertEquals(Double.TYPE, array.getClass().getComponentType());
try {
ArrayUtils.remove(new double[] {1, 2}, -1);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove(new double[] {1, 2}, 2);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove((double[]) null, 0);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
}
public void testRemoveFloatArray() {
float[] array;
array = ArrayUtils.remove(new float[] {1}, 0);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_FLOAT_ARRAY, array));
assertEquals(Float.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new float[] {1, 2}, 0);
assertTrue(Arrays.equals(new float[] {2}, array));
assertEquals(Float.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new float[] {1, 2}, 1);
assertTrue(Arrays.equals(new float[] {1}, array));
assertEquals(Float.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new float[] {1, 2, 1}, 1);
assertTrue(Arrays.equals(new float[] {1, 1}, array));
assertEquals(Float.TYPE, array.getClass().getComponentType());
try {
ArrayUtils.remove(new float[] {1, 2}, -1);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove(new float[] {1, 2}, 2);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove((float[]) null, 0);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
}
public void testRemoveIntArray() {
int[] array;
array = ArrayUtils.remove(new int[] {1}, 0);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_INT_ARRAY, array));
assertEquals(Integer.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new int[] {1, 2}, 0);
assertTrue(Arrays.equals(new int[] {2}, array));
assertEquals(Integer.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new int[] {1, 2}, 1);
assertTrue(Arrays.equals(new int[] {1}, array));
assertEquals(Integer.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new int[] {1, 2, 1}, 1);
assertTrue(Arrays.equals(new int[] {1, 1}, array));
assertEquals(Integer.TYPE, array.getClass().getComponentType());
try {
ArrayUtils.remove(new int[] {1, 2}, -1);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove(new int[] {1, 2}, 2);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove((int[]) null, 0);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
}
public void testRemoveLongArray() {
long[] array;
array = ArrayUtils.remove(new long[] {1}, 0);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_LONG_ARRAY, array));
assertEquals(Long.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new long[] {1, 2}, 0);
assertTrue(Arrays.equals(new long[] {2}, array));
assertEquals(Long.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new long[] {1, 2}, 1);
assertTrue(Arrays.equals(new long[] {1}, array));
assertEquals(Long.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new long[] {1, 2, 1}, 1);
assertTrue(Arrays.equals(new long[] {1, 1}, array));
assertEquals(Long.TYPE, array.getClass().getComponentType());
try {
ArrayUtils.remove(new long[] {1, 2}, -1);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove(new long[] {1, 2}, 2);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove((long[]) null, 0);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
}
public void testRemoveShortArray() {
short[] array;
array = ArrayUtils.remove(new short[] {1}, 0);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_SHORT_ARRAY, array));
assertEquals(Short.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new short[] {1, 2}, 0);
assertTrue(Arrays.equals(new short[] {2}, array));
assertEquals(Short.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new short[] {1, 2}, 1);
assertTrue(Arrays.equals(new short[] {1}, array));
assertEquals(Short.TYPE, array.getClass().getComponentType());
array = ArrayUtils.remove(new short[] {1, 2, 1}, 1);
assertTrue(Arrays.equals(new short[] {1, 1}, array));
assertEquals(Short.TYPE, array.getClass().getComponentType());
try {
ArrayUtils.remove(new short[] {1, 2}, -1);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove(new short[] {1, 2}, 2);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
try {
ArrayUtils.remove((short[]) null, 0);
fail("IndexOutOfBoundsException expected");
} catch (IndexOutOfBoundsException e) {}
}
public void testRemoveElementObjectArray() {
Object[] array;
array = ArrayUtils.removeElement((Object[]) null, "a");
assertNull(array);
array = ArrayUtils.removeElement(ArrayUtils.EMPTY_OBJECT_ARRAY, "a");
assertTrue(Arrays.equals(ArrayUtils.EMPTY_OBJECT_ARRAY, array));
assertEquals(Object.class, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new Object[] {"a"}, "a");
assertTrue(Arrays.equals(ArrayUtils.EMPTY_OBJECT_ARRAY, array));
assertEquals(Object.class, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new Object[] {"a", "b"}, "a");
assertTrue(Arrays.equals(new Object[] {"b"}, array));
assertEquals(Object.class, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new Object[] {"a", "b", "a"}, "a");
assertTrue(Arrays.equals(new Object[] {"b", "a"}, array));
assertEquals(Object.class, array.getClass().getComponentType());
}
public void testRemoveElementBooleanArray() {
boolean[] array;
array = ArrayUtils.removeElement((boolean[]) null, true);
assertNull(array);
array = ArrayUtils.removeElement(ArrayUtils.EMPTY_BOOLEAN_ARRAY, true);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_BOOLEAN_ARRAY, array));
assertEquals(Boolean.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new boolean[] {true}, true);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_BOOLEAN_ARRAY, array));
assertEquals(Boolean.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new boolean[] {true, false}, true);
assertTrue(Arrays.equals(new boolean[] {false}, array));
assertEquals(Boolean.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new boolean[] {true, false, true}, true);
assertTrue(Arrays.equals(new boolean[] {false, true}, array));
assertEquals(Boolean.TYPE, array.getClass().getComponentType());
}
public void testRemoveElementByteArray() {
byte[] array;
array = ArrayUtils.removeElement((byte[]) null, (byte) 1);
assertNull(array);
array = ArrayUtils.removeElement(ArrayUtils.EMPTY_BYTE_ARRAY, (byte) 1);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_BYTE_ARRAY, array));
assertEquals(Byte.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new byte[] {1}, (byte) 1);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_BYTE_ARRAY, array));
assertEquals(Byte.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new byte[] {1, 2}, (byte) 1);
assertTrue(Arrays.equals(new byte[] {2}, array));
assertEquals(Byte.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new byte[] {1, 2, 1}, (byte) 1);
assertTrue(Arrays.equals(new byte[] {2, 1}, array));
assertEquals(Byte.TYPE, array.getClass().getComponentType());
}
public void testRemoveElementCharArray() {
char[] array;
array = ArrayUtils.removeElement((char[]) null, 'a');
assertNull(array);
array = ArrayUtils.removeElement(ArrayUtils.EMPTY_CHAR_ARRAY, 'a');
assertTrue(Arrays.equals(ArrayUtils.EMPTY_CHAR_ARRAY, array));
assertEquals(Character.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new char[] {'a'}, 'a');
assertTrue(Arrays.equals(ArrayUtils.EMPTY_CHAR_ARRAY, array));
assertEquals(Character.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new char[] {'a', 'b'}, 'a');
assertTrue(Arrays.equals(new char[] {'b'}, array));
assertEquals(Character.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new char[] {'a', 'b', 'a'}, 'a');
assertTrue(Arrays.equals(new char[] {'b', 'a'}, array));
assertEquals(Character.TYPE, array.getClass().getComponentType());
}
public void testRemoveElementDoubleArray() {
double[] array;
array = ArrayUtils.removeElement((double[]) null, (double) 1);
assertNull(array);
array = ArrayUtils.removeElement(ArrayUtils.EMPTY_DOUBLE_ARRAY, (double) 1);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_DOUBLE_ARRAY, array));
assertEquals(Double.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new double[] {1}, (double) 1);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_DOUBLE_ARRAY, array));
assertEquals(Double.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new double[] {1, 2}, (double) 1);
assertTrue(Arrays.equals(new double[] {2}, array));
assertEquals(Double.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new double[] {1, 2, 1}, (double) 1);
assertTrue(Arrays.equals(new double[] {2, 1}, array));
assertEquals(Double.TYPE, array.getClass().getComponentType());
}
public void testRemoveElementFloatArray() {
float[] array;
array = ArrayUtils.removeElement((float[]) null, (float) 1);
assertNull(array);
array = ArrayUtils.removeElement(ArrayUtils.EMPTY_FLOAT_ARRAY, (float) 1);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_FLOAT_ARRAY, array));
assertEquals(Float.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new float[] {1}, (float) 1);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_FLOAT_ARRAY, array));
assertEquals(Float.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new float[] {1, 2}, (float) 1);
assertTrue(Arrays.equals(new float[] {2}, array));
assertEquals(Float.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new float[] {1, 2, 1}, (float) 1);
assertTrue(Arrays.equals(new float[] {2, 1}, array));
assertEquals(Float.TYPE, array.getClass().getComponentType());
}
public void testRemoveElementIntArray() {
int[] array;
array = ArrayUtils.removeElement((int[]) null, 1);
assertNull(array);
array = ArrayUtils.removeElement(ArrayUtils.EMPTY_INT_ARRAY, 1);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_INT_ARRAY, array));
assertEquals(Integer.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new int[] {1}, 1);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_INT_ARRAY, array));
assertEquals(Integer.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new int[] {1, 2}, 1);
assertTrue(Arrays.equals(new int[] {2}, array));
assertEquals(Integer.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new int[] {1, 2, 1}, 1);
assertTrue(Arrays.equals(new int[] {2, 1}, array));
assertEquals(Integer.TYPE, array.getClass().getComponentType());
}
public void testRemoveElementLongArray() {
long[] array;
array = ArrayUtils.removeElement((long[]) null, (long) 1);
assertNull(array);
array = ArrayUtils.removeElement(ArrayUtils.EMPTY_LONG_ARRAY, (long) 1);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_LONG_ARRAY, array));
assertEquals(Long.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new long[] {1}, (long) 1);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_LONG_ARRAY, array));
assertEquals(Long.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new long[] {1, 2}, (long) 1);
assertTrue(Arrays.equals(new long[] {2}, array));
assertEquals(Long.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new long[] {1, 2, 1}, (long) 1);
assertTrue(Arrays.equals(new long[] {2, 1}, array));
assertEquals(Long.TYPE, array.getClass().getComponentType());
}
public void testRemoveElementShortArray() {
short[] array;
array = ArrayUtils.removeElement((short[]) null, (short) 1);
assertNull(array);
array = ArrayUtils.removeElement(ArrayUtils.EMPTY_SHORT_ARRAY, (short) 1);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_SHORT_ARRAY, array));
assertEquals(Short.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new short[] {1}, (short) 1);
assertTrue(Arrays.equals(ArrayUtils.EMPTY_SHORT_ARRAY, array));
assertEquals(Short.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new short[] {1, 2}, (short) 1);
assertTrue(Arrays.equals(new short[] {2}, array));
assertEquals(Short.TYPE, array.getClass().getComponentType());
array = ArrayUtils.removeElement(new short[] {1, 2, 1}, (short) 1);
assertTrue(Arrays.equals(new short[] {2, 1}, array));
assertEquals(Short.TYPE, array.getClass().getComponentType());
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org