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 19c30f4a29f579de97de1c501005406d63f91a4f..fb337d1e20129fd74979cdb25fc088684350ec3c 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 e54c60a6c2f482a708a0ceda5336b56729950476..8ea1a51fe2a8f97c9ed98e01ac48d66c6b2eef2a 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();