From 035ab33fb3bbc43abeec9dd40a54abf795449441 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 28 Oct 2020 10:55:46 +0800 Subject: [PATCH] add method --- CHANGELOG.md | 1 + .../java/cn/hutool/core/util/ArrayUtil.java | 19 ++++++++++ .../cn/hutool/core/util/ArrayUtilTest.java | 36 ++++++++++++++----- 3 files changed, 48 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9dd6d9c4..1068a1a8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ * 【core 】 CollUtil增加forEach重载(issue#I22NA4@Gitee) * 【core 】 CollUtil.map忽略空值改规则为原数组中的元素和处理后的元素都会忽略空值(issue#I22N08@Gitee) * 【http 】 增加SoapClient增加addSOAPHeader重载 +* 【http 】 ArrayUtil增加containsAll方法 ### Bug修复 ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java index c09dd1b87..78084e7ca 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java @@ -1340,6 +1340,25 @@ public class ArrayUtil { return false; } + /** + * 数组中是否包含指定元素中的全部 + * + * @param 数组元素类型 + * @param array 数组 + * @param values 被检查的多个元素 + * @return 是否包含指定元素中的全部 + * @since 5.4.7 + */ + @SuppressWarnings("unchecked") + public static boolean containsAll(T[] array, T... values) { + for (T value : values) { + if (false == contains(array, value)) { + return false; + } + } + return true; + } + /** * 数组中是否包含元素,忽略大小写 * diff --git a/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java index 2fb31983a..0d504d886 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java @@ -126,6 +126,26 @@ public class ArrayUtilTest { Assert.assertTrue(contains2); } + @Test + public void containsAnyTest() { + Integer[] a = {1, 2, 3, 4, 3, 6}; + boolean contains = ArrayUtil.containsAny(a, 4, 10, 40); + Assert.assertTrue(contains); + + contains = ArrayUtil.containsAny(a, 10, 40); + Assert.assertFalse(contains); + } + + @Test + public void containsAllTest() { + Integer[] a = {1, 2, 3, 4, 3, 6}; + boolean contains = ArrayUtil.containsAll(a, 4, 2, 6); + Assert.assertTrue(contains); + + contains = ArrayUtil.containsAll(a, 1, 2, 3, 5); + Assert.assertFalse(contains); + } + @Test public void mapTest() { String[] keys = {"a", "b", "c"}; @@ -172,13 +192,13 @@ public class ArrayUtilTest { BigDecimal one = new BigDecimal("1.00"); BigDecimal two = new BigDecimal("2.0"); BigDecimal three = new BigDecimal("3"); - BigDecimal[] bigDecimals = {two,one,three}; + BigDecimal[] bigDecimals = {two, one, three}; BigDecimal minAccuracy = ArrayUtil.min(bigDecimals, Comparator.comparingInt(BigDecimal::scale)); - Assert.assertEquals(minAccuracy,three); + Assert.assertEquals(minAccuracy, three); - BigDecimal maxAccuracy = ArrayUtil.max(bigDecimals,Comparator.comparingInt(BigDecimal::scale)); - Assert.assertEquals(maxAccuracy,one); + BigDecimal maxAccuracy = ArrayUtil.max(bigDecimals, Comparator.comparingInt(BigDecimal::scale)); + Assert.assertEquals(maxAccuracy, one); } @Test @@ -275,7 +295,7 @@ public class ArrayUtilTest { } @Test - public void toArrayTest(){ + public void toArrayTest() { final ArrayList list = CollUtil.newArrayList("A", "B", "C", "D"); final String[] array = ArrayUtil.toArray(list, String.class); Assert.assertEquals("A", array[0]); @@ -285,13 +305,13 @@ public class ArrayUtilTest { } @Test - public void addAllTest(){ + public void addAllTest() { final int[] ints = ArrayUtil.addAll(new int[]{1, 2, 3}, new int[]{4, 5, 6}); - Assert.assertArrayEquals(new int[]{1,2,3,4,5,6}, ints); + Assert.assertArrayEquals(new int[]{1, 2, 3, 4, 5, 6}, ints); } @Test - public void isAllNotNullTest(){ + public void isAllNotNullTest() { String[] allNotNull = {"aa", "bb", "cc", "dd", "bb", "dd"}; Assert.assertTrue(ArrayUtil.isAllNotNull(allNotNull)); String[] hasNull = {"aa", "bb", "cc", null, "bb", "dd"};