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 85f91f420 Add ArrayUtils.containsAny(int[], int...)
85f91f420 is described below

commit 85f91f4208903bb7ca608d51c941214b667d3c06
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Thu Oct 31 10:50:50 2024 -0400

    Add ArrayUtils.containsAny(int[], int...)
    
    Add IntStrams.of(int...)
---
 src/changes/changes.xml                              |  2 ++
 .../java/org/apache/commons/lang3/ArrayUtils.java    | 20 ++++++++++++++++++++
 .../org/apache/commons/lang3/stream/IntStreams.java  | 12 ++++++++++++
 .../org/apache/commons/lang3/ArrayUtilsTest.java     | 12 +++++++++++-
 .../apache/commons/lang3/stream/IntStreamsTest.java  |  8 ++++++++
 5 files changed, 53 insertions(+), 1 deletion(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index e3a149a22..b9eec7d57 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -68,6 +68,8 @@ The <action> type attribute can be add,update,fix,remove.
     <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add SystemUtils.IS_JAVA_23.</action>
     <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add IntegerRange.toIntStream().</action>
     <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add LongRange.toLongStream().</action>
+    <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add IntStrams.of(int...).</action>
+    <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add ArrayUtils.containsAny(int[], int...).</action>
     <!-- UPDATE -->
     <action                   type="update" dev="ggregory" due-to="Gary 
Gregory, Dependabot">Bump org.apache.commons:commons-parent from 73 to 78 
#1267, #1277, #1283, #1288, #1302.</action>
     <action                   type="update" dev="ggregory" due-to="Gary 
Gregory, Dependabot">Bump org.codehaus.mojo:taglist-maven-plugin from 3.1.0 to 
3.2.1 #1300.</action> 
diff --git a/src/main/java/org/apache/commons/lang3/ArrayUtils.java 
b/src/main/java/org/apache/commons/lang3/ArrayUtils.java
index 6c8fbca3c..fa90a927b 100644
--- a/src/main/java/org/apache/commons/lang3/ArrayUtils.java
+++ b/src/main/java/org/apache/commons/lang3/ArrayUtils.java
@@ -39,6 +39,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import org.apache.commons.lang3.math.NumberUtils;
 import org.apache.commons.lang3.mutable.MutableInt;
+import org.apache.commons.lang3.stream.IntStreams;
 import org.apache.commons.lang3.stream.Streams;
 
 /**
@@ -1734,6 +1735,25 @@ public class ArrayUtils {
         return indexOf(array, valueToFind) != INDEX_NOT_FOUND;
     }
 
+    /**
+     * Checks if any of the ints are in the given array.
+     * <p>
+     * The method returns {@code false} if a {@code null} array is passed in.
+     * </p>
+     * <p>
+     * If the {@code array} elements you are searching implement {@link 
Comparator}, consider whether it is worth using
+     * {@link Arrays#sort(int[])} and {@link Arrays#binarySearch(int[], int)}.
+     * </p>
+     *
+     * @param array         the array to search through
+     * @param objectsToFind any of the ints to find
+     * @return {@code true} if the array contains any of the ints
+     * @since 3.18.0
+     */
+    public static boolean containsAny(final int[] array, final int... 
objectsToFind) {
+        return IntStreams.of(objectsToFind).anyMatch(e -> contains(array, e));
+    }
+
     /**
      * Checks if any of the objects are in the given array.
      * <p>
diff --git a/src/main/java/org/apache/commons/lang3/stream/IntStreams.java 
b/src/main/java/org/apache/commons/lang3/stream/IntStreams.java
index 132e0ffa8..d11c13e52 100644
--- a/src/main/java/org/apache/commons/lang3/stream/IntStreams.java
+++ b/src/main/java/org/apache/commons/lang3/stream/IntStreams.java
@@ -28,6 +28,18 @@ import java.util.stream.IntStream;
  */
 public class IntStreams {
 
+    /**
+     * Null-safe version of {@link IntStream#of(int[])}.
+     *
+     * @param values the elements of the new stream, may be {@code null}.
+     * @return the new stream on {@code values} or {@link IntStream#empty()}.
+     * @since 3.18.0
+     */
+    @SafeVarargs // Creating a stream from an array is safe
+    public static IntStream of(final int... values) {
+        return values == null ? IntStream.empty() : IntStream.of(values);
+    }
+
     /**
      * Shorthand for {@code IntStream.range(0, i)}.
      *
diff --git a/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java 
b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
index 383a8be33..a18af4948 100644
--- a/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/ArrayUtilsTest.java
@@ -252,7 +252,17 @@ public class ArrayUtilsTest extends AbstractLangTest {
     }
 
     @Test
-    public void testContainsAny() {
+    public void testContainsAnyInt() {
+        final int[] array = {0, 1, 2, 3, 0};
+        assertFalse(ArrayUtils.containsAny((int[]) null, 1));
+        assertTrue(ArrayUtils.containsAny(array, 0));
+        assertTrue(ArrayUtils.containsAny(array, 1));
+        assertTrue(ArrayUtils.containsAny(array, 2));
+        assertTrue(ArrayUtils.containsAny(array, 3));
+    }
+
+    @Test
+    public void testContainsAnyObject() {
         final Object[] array = {"0", "1", "2", "3", null, "0"};
         assertFalse(ArrayUtils.containsAny(null, (Object) null));
         assertFalse(ArrayUtils.containsAny(null, "1"));
diff --git a/src/test/java/org/apache/commons/lang3/stream/IntStreamsTest.java 
b/src/test/java/org/apache/commons/lang3/stream/IntStreamsTest.java
index ecb87d68b..eeee3ddd9 100644
--- a/src/test/java/org/apache/commons/lang3/stream/IntStreamsTest.java
+++ b/src/test/java/org/apache/commons/lang3/stream/IntStreamsTest.java
@@ -17,6 +17,7 @@
 package org.apache.commons.lang3.stream;
 
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import org.apache.commons.lang3.AbstractLangTest;
 import org.junit.jupiter.api.Test;
@@ -26,6 +27,13 @@ import org.junit.jupiter.api.Test;
  */
 public class IntStreamsTest extends AbstractLangTest {
 
+    @Test
+    public void testOfArray() {
+        assertEquals(0, IntStreams.of((int[]) null).count());
+        assertEquals(1, IntStreams.of(1).count());
+        assertEquals(2, IntStreams.of(1, 2).count());
+    }
+
     @Test
     public void testRange() {
         assertArrayEquals(new int[] {0, 1}, IntStreams.range(2).toArray());

Reply via email to