You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2020/11/14 16:42:05 UTC

[commons-lang] branch master updated: Add fluent-style ArrayUtils.sort(Object[]).

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git


The following commit(s) were added to refs/heads/master by this push:
     new 09c6624  Add fluent-style ArrayUtils.sort(Object[]).
09c6624 is described below

commit 09c662429ba43ccadb1f16cfae82b23458ec5c1d
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sat Nov 14 11:41:46 2020 -0500

    Add fluent-style ArrayUtils.sort(Object[]).
---
 src/changes/changes.xml                            |   1 +
 .../java/org/apache/commons/lang3/ArrayUtils.java  | 102 ++++++++++++---------
 .../org/apache/commons/lang3/ArrayUtilsTest.java   |  10 +-
 .../org/apache/commons/lang3/BooleanUtilsTest.java |   5 +-
 4 files changed, 69 insertions(+), 49 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index caddf69..0d63398 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -62,6 +62,7 @@ The <action> type attribute can be add,update,fix,remove.
     <action issue="LANG-1359" type="add" dev="ggregory" due-to="Gary Gregory, Keegan Witt">Add StopWatch.getStopTime().</action>
     <action                   type="add" dev="ggregory" due-to="Edgar Asatryan">More test coverage for CharSequenceUtils. #631.</action>
     <action issue="LANG-1596" type="update" dev="aherbert" due-to="Richard Eckart de Castilho">ArrayUtils.toPrimitive(Object) does not support boolean and other types #607.</action>
+    <action                   type="add" dev="ggregory" due-to="Gary Gregory">Add fluent-style ArrayUtils.sort(Object[]).</action>
     <!--  UPDATES -->
     <action                   type="update" dev="ggregory" due-to="Gary Gregory">Enable Dependabot #587.</action>
     <action                   type="update" dev="chtompki">Bump junit-jupiter from 5.6.2 to 5.7.0.</action>
diff --git a/src/main/java/org/apache/commons/lang3/ArrayUtils.java b/src/main/java/org/apache/commons/lang3/ArrayUtils.java
index f620fd9..8aeafa7 100644
--- a/src/main/java/org/apache/commons/lang3/ArrayUtils.java
+++ b/src/main/java/org/apache/commons/lang3/ArrayUtils.java
@@ -973,7 +973,7 @@ public class ArrayUtils {
         System.arraycopy(array2, 0, joinedArray, array1.length, array2.length);
         return joinedArray;
     }
-
+    
     /**
      * <p>Adds all the elements of the given arrays into a new array.
      * <p>The new array contains all of the element of {@code array1} followed
@@ -2524,50 +2524,50 @@ public class ArrayUtils {
         return INDEX_NOT_FOUND;
     }
 
-   // int IndexOf
-//-----------------------------------------------------------------------
-/**
- * <p>Finds the index of the given value in the array.
- *
- * <p>This method returns {@link #INDEX_NOT_FOUND} ({@code -1}) for a {@code null} input array.
- *
- * @param array  the array to search through for the object, may be {@code null}
- * @param valueToFind  the value to find
- * @return the index of the value within the array,
- *  {@link #INDEX_NOT_FOUND} ({@code -1}) if not found or {@code null} array input
- */
-public static int indexOf(final int[] array, final int valueToFind) {
-    return indexOf(array, valueToFind, 0);
-}
-
+    // int IndexOf
+    //-----------------------------------------------------------------------
     /**
-     * <p>Finds the index of the given value in the array starting at the given index.
+     * <p>Finds the index of the given value in the array.
      *
      * <p>This method returns {@link #INDEX_NOT_FOUND} ({@code -1}) for a {@code null} input array.
      *
-     * <p>A negative startIndex is treated as zero. A startIndex larger than the array
-     * length will return {@link #INDEX_NOT_FOUND} ({@code -1}).
-     *
      * @param array  the array to search through for the object, may be {@code null}
      * @param valueToFind  the value to find
-     * @param startIndex  the index to start searching at
      * @return the index of the value within the array,
      *  {@link #INDEX_NOT_FOUND} ({@code -1}) if not found or {@code null} array input
      */
-    public static int indexOf(final int[] array, final int valueToFind, int startIndex) {
-        if (array == null) {
-            return INDEX_NOT_FOUND;
-        }
-        if (startIndex < 0) {
-            startIndex = 0;
-        }
-        for (int i = startIndex; i < array.length; i++) {
-            if (valueToFind == array[i]) {
-                return i;
-            }
-        }
+    public static int indexOf(final int[] array, final int valueToFind) {
+        return indexOf(array, valueToFind, 0);
+    }
+
+   /**
+ * <p>Finds the index of the given value in the array starting at the given index.
+ *
+ * <p>This method returns {@link #INDEX_NOT_FOUND} ({@code -1}) for a {@code null} input array.
+ *
+ * <p>A negative startIndex is treated as zero. A startIndex larger than the array
+ * length will return {@link #INDEX_NOT_FOUND} ({@code -1}).
+ *
+ * @param array  the array to search through for the object, may be {@code null}
+ * @param valueToFind  the value to find
+ * @param startIndex  the index to start searching at
+ * @return the index of the value within the array,
+ *  {@link #INDEX_NOT_FOUND} ({@code -1}) if not found or {@code null} array input
+ */
+public static int indexOf(final int[] array, final int valueToFind, int startIndex) {
+    if (array == null) {
         return INDEX_NOT_FOUND;
     }
+    if (startIndex < 0) {
+        startIndex = 0;
+    }
+    for (int i = startIndex; i < array.length; i++) {
+        if (valueToFind == array[i]) {
+            return i;
+        }
+    }
+    return INDEX_NOT_FOUND;
+}
 
     // long IndexOf
     //-----------------------------------------------------------------------
@@ -3133,9 +3133,6 @@ public static int indexOf(final int[] array, final int valueToFind) {
         return getLength(array) == 0;
     }
 
-    // IndexOf search
-    // ----------------------------------------------------------------------
-
     /**
      * <p>Checks if an array of primitive bytes is empty or {@code null}.
      *
@@ -3147,6 +3144,9 @@ public static int indexOf(final int[] array, final int valueToFind) {
         return getLength(array) == 0;
     }
 
+    // IndexOf search
+    // ----------------------------------------------------------------------
+
     /**
      * <p>Checks if an array of primitive chars is empty or {@code null}.
      *
@@ -3180,8 +3180,6 @@ public static int indexOf(final int[] array, final int valueToFind) {
         return getLength(array) == 0;
     }
 
-
-
     /**
      * <p>Checks if an array of primitive ints is empty or {@code null}.
      *
@@ -3193,6 +3191,8 @@ public static int indexOf(final int[] array, final int valueToFind) {
         return getLength(array) == 0;
     }
 
+
+
     /**
      * <p>Checks if an array of primitive longs is empty or {@code null}.
      *
@@ -3436,7 +3436,6 @@ public static int indexOf(final int[] array, final int valueToFind) {
         return getLength(array1) == getLength(array2);
     }
 
-
     /**
      * <p>Checks whether two arrays are the same length, treating
      * {@code null} arrays as length {@code 0}.
@@ -3453,6 +3452,7 @@ public static int indexOf(final int[] array, final int valueToFind) {
         return getLength(array1) == getLength(array2);
     }
 
+
     /**
      * <p>Checks whether two arrays are the same length, treating
      * {@code null} arrays as length {@code 0}.
@@ -3978,7 +3978,6 @@ public static int indexOf(final int[] array, final int valueToFind) {
         return INDEX_NOT_FOUND;
     }
 
-
     /**
      * <p>Finds the last index of the given value within the array.
      *
@@ -3993,6 +3992,7 @@ public static int indexOf(final int[] array, final int valueToFind) {
         return lastIndexOf(array, valueToFind, Integer.MAX_VALUE);
     }
 
+
     /**
      * <p>Finds the last index of the given value in the array starting at the given index.
      *
@@ -4452,9 +4452,6 @@ public static int indexOf(final int[] array, final int valueToFind) {
         return array;
     }
 
-    // Primitive/Object array converters
-    // ----------------------------------------------------------------------
-
     /**
      * <p>Defensive programming technique to change a {@code null}
      * reference to an empty one.
@@ -4475,6 +4472,9 @@ public static int indexOf(final int[] array, final int valueToFind) {
         return array;
     }
 
+    // Primitive/Object array converters
+    // ----------------------------------------------------------------------
+
     /**
      * <p>Defensive programming technique to change a {@code null}
      * reference to an empty one.
@@ -7857,6 +7857,20 @@ public static int indexOf(final int[] array, final int valueToFind) {
     }
 
     /**
+     * Sorts and returns the given array.
+     *
+     * @param <T> the array type.
+     * @param array the array to sort.
+     * @return the given array.
+     * @see Arrays#sort(Object[])
+     * @since 3.12
+     */
+    public static <T> T[] sort(T[] array) {
+        Arrays.sort(array);
+        return array;
+    }
+
+    /**
      * <p>Produces a new {@code boolean} array containing the elements
      * between the start and end indices.
      *
diff --git a/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
index 46bb104..2c5a1f6 100644
--- a/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
@@ -78,7 +78,6 @@ public class ArrayUtilsTest {
         assertEquals("foo", array[0]);
         assertEquals("bar", array[1]);
     }
-
     /**
      * Tests generic array creation with parameters of common base type.
      */
@@ -4529,7 +4528,6 @@ public class ArrayUtilsTest {
         assertEquals(2, array[3]);
     }
 
-
     @Test
     public void testShiftFloat() {
         final float[] array = new float[]{1, 2, 3, 4};
@@ -4555,6 +4553,7 @@ public class ArrayUtilsTest {
         assertEquals(2, array[3]);
     }
 
+
     @Test
     public void testShiftInt() {
         final int[] array = new int[]{1, 2, 3, 4};
@@ -5097,6 +5096,13 @@ public class ArrayUtilsTest {
         }
     }
 
+    public void testSort() {
+        final String[] array1 = ArrayUtils.toArray("foo", "bar");
+        final String[] array2 = array1.clone();
+        Arrays.sort(array1);
+        assertEquals(array1, ArrayUtils.sort(array2));
+    }
+
     @Test
     public void testSubarrayBoolean() {
         final boolean[] nullArray = null;
diff --git a/src/test/java/org/apache/commons/lang3/BooleanUtilsTest.java b/src/test/java/org/apache/commons/lang3/BooleanUtilsTest.java
index 6eb6d1c..26250d6 100644
--- a/src/test/java/org/apache/commons/lang3/BooleanUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/BooleanUtilsTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.commons.lang3;
 
+import static org.apache.commons.lang3.ArrayUtils.sort;
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -27,7 +28,6 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
-import java.util.Arrays;
 
 import org.junit.jupiter.api.Test;
 
@@ -39,8 +39,7 @@ public class BooleanUtilsTest {
     @Test
     public void test_booleanValues() {
         final Boolean[] expected = new Boolean[] {false, true};
-        Arrays.sort(expected);
-        assertArrayEquals(expected, BooleanUtils.booleanValues());
+        assertArrayEquals(sort(expected), BooleanUtils.booleanValues());
     }
 
     @Test