diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java index 19c30f4a2..fb337d1e2 100644 --- a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java @@ -50,6 +50,7 @@ import java.util.concurrent.BlockingQueue; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.LinkedBlockingDeque; import java.util.function.Function; +import java.util.function.Predicate; /** * 集合相关工具类 @@ -410,6 +411,26 @@ public class CollUtil { return isNotEmpty(collection) && collection.contains(value); } + /** + * 自定义函数判断集合是否包含某类值 + * + * @param collection 集合 + * @param containFunc 自定义判断函数 + * @param 值类型 + * @return 是否包含自定义规则的值 + */ + public static boolean contains(Collection collection, Predicate containFunc) { + if (isEmpty(collection)) { + return false; + } + for (T t : collection) { + if (containFunc.test(t)) { + return true; + } + } + return false; + } + /** * 其中一个集合在另一个集合中是否至少包含一个元素,即是两个集合是否至少有一个共同的元素 * diff --git a/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java index e54c60a6c..8ea1a51fe 100644 --- a/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java @@ -19,6 +19,13 @@ import java.util.*; */ public class CollUtilTest { + @Test + public void testPredicateContains() { + ArrayList list = CollUtil.newArrayList("bbbbb", "aaaaa", "ccccc"); + Assert.assertTrue(CollUtil.contains(list, s -> s.startsWith("a"))); + Assert.assertFalse(CollUtil.contains(list, s -> s.startsWith("d"))); + } + @Test public void testPadLeft() { List srcList = CollUtil.newArrayList();