---
 .../sf/freecol/common/util/CollectionUtils.java    | 79 ++++++++--------------
 1 file changed, 29 insertions(+), 50 deletions(-)

diff --git a/src/net/sf/freecol/common/util/CollectionUtils.java 
b/src/net/sf/freecol/common/util/CollectionUtils.java
index bb76838eb58..841cf3dad2f 100644
--- a/src/net/sf/freecol/common/util/CollectionUtils.java
+++ b/src/net/sf/freecol/common/util/CollectionUtils.java
@@ -383,9 +383,10 @@ public class CollectionUtils {
     }
 
     // Stream-based routines from here on
-    
+
     /**
      * Do all members of an array match a predicate?
+     * If the array is null, also return true.
      *
      * @param <T> The array member type.
      * @param array The array to test.
@@ -393,8 +394,10 @@ public class CollectionUtils {
      * @return True if all members pass the predicate test.
      */
     public static <T> boolean all(T[] array, Predicate<? super T> predicate) {
-        return (array == null) ? true
-            : all_internal(Arrays.stream(array), predicate);
+        if (array != null && array.length > 0)
+            for (int x=0; x<array.length; x++)
+                if (!predicate.test(array[x])) return false;
+        return true;
     }
 
     /**
@@ -407,7 +410,10 @@ public class CollectionUtils {
      */
     public static <T> boolean all(Collection<T> c,
                                   Predicate<? super T> predicate) {
-        return (c == null) ? true : all_internal(c.stream(), predicate);
+        if (c != null)
+            for (T e : c)
+                if (!predicate.test(e)) return false;
+        return true;
     }
 
     /**
@@ -420,20 +426,7 @@ public class CollectionUtils {
      */
     public static <T> boolean all(Stream<T> stream,
                                   Predicate<? super T> predicate) {
-        return (stream == null) ? true : all_internal(stream, predicate);
-    }
-
-    /**
-     * Implementation of all().
-     *
-     * @param <T> The stream member type.
-     * @param stream The {@code Stream} to test.
-     * @param predicate The {@code Predicate} to test with.
-     * @return True if all members pass the predicate test.
-     */
-    private static <T> boolean all_internal(Stream<T> stream,
-                                            Predicate<? super T> predicate) {
-        return stream.allMatch(predicate);
+        return (stream == null) ? true : stream.allMatch(predicate);
     }
 
     /**
@@ -466,7 +459,10 @@ public class CollectionUtils {
      * @return True if any member passes the predicate test.
      */
     public static <T> boolean any(T[] array, Predicate<? super T> predicate) {
-        return any_internal(Arrays.stream(array), predicate);
+        if (array != null && array.length > 0)
+            for (int x=0; x<array.length; x++)
+                if (predicate.test(array[x])) return true;
+        return false;
     }
 
     /**
@@ -490,7 +486,10 @@ public class CollectionUtils {
      */
     public static <T> boolean any(Collection<T> c,
                                   Predicate<? super T> predicate) {
-        return (c == null) ? false : any_internal(c.stream(), predicate);
+        if (c != null)
+            for (T e : c)
+                if (predicate.test(e)) return true;
+        return false;
     }
 
     /**
@@ -514,20 +513,7 @@ public class CollectionUtils {
      */
     public static <T> boolean any(Stream<T> stream,
                                   Predicate<? super T> predicate) {
-        return (stream == null) ? false : any_internal(stream, predicate);
-    }
-
-    /**
-     * Implementation of any().
-     *
-     * @param <T> The stream member type.
-     * @param stream The {@code Stream} to test.
-     * @param predicate The {@code Predicate} to test with.
-     * @return True if any member passes the predicate test.
-     */
-    private static <T> boolean any_internal(Stream<T> stream,
-                                            Predicate<? super T> predicate) {
-        return stream.anyMatch(predicate);
+        return (stream == null) ? false : stream.anyMatch(predicate);
     }
 
     /**
@@ -1752,7 +1738,10 @@ public class CollectionUtils {
      * @return True if no member passes the predicate test.
      */
     public static <T> boolean none(T[] array, Predicate<? super T> predicate) {
-        return none_internal(Arrays.stream(array), predicate);
+        if (array != null && array.length > 0)
+            for (int x=0; x<array.length; x++)
+                if (predicate.test(array[x])) return false;
+        return true;
     }
 
     /**
@@ -1776,7 +1765,10 @@ public class CollectionUtils {
      */
     public static <T> boolean none(Collection<T> c,
                                    Predicate<? super T> predicate) {
-        return none_internal(c.stream(), predicate);
+        if (c != null && !c.isEmpty())
+            for (T e : c)
+                if (predicate.test(e)) return false;
+        return true;
     }
 
     /**
@@ -1800,20 +1792,7 @@ public class CollectionUtils {
      */
     public static <T> boolean none(Stream<T> stream,
                                    Predicate<? super T> predicate) {
-        return (stream == null) ? true : none_internal(stream, predicate);
-    }
-
-    /**
-     * Implementation of none().
-     *
-     * @param <T> The stream member type.
-     * @param stream The {@code Stream} to test.
-     * @param predicate The {@code Predicate} to test with.
-     * @return True if no member passes the predicate test.
-     */
-    private static <T> boolean none_internal(Stream<T> stream,
-                                             Predicate<? super T> predicate) {
-        return stream.noneMatch(predicate);
+        return (stream == null) ? true : stream.noneMatch(predicate);
     }
 
     /**
-- 
2.11.0.rc0.7.gbe5a750


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Freecol-developers mailing list
Freecol-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freecol-developers

Reply via email to