Browse Source

add method

Looly 5 years ago
parent
commit
035ab33fb3

+ 1 - 0
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修复
 
 -------------------------------------------------------------------------------------------------------------

+ 19 - 0
hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java

@@ -1341,6 +1341,25 @@ public class ArrayUtil {
 	}
 
 	/**
+	 * 数组中是否包含指定元素中的全部
+	 *
+	 * @param <T>    数组元素类型
+	 * @param array  数组
+	 * @param values 被检查的多个元素
+	 * @return 是否包含指定元素中的全部
+	 * @since 5.4.7
+	 */
+	@SuppressWarnings("unchecked")
+	public static <T> boolean containsAll(T[] array, T... values) {
+		for (T value : values) {
+			if (false == contains(array, value)) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
 	 * 数组中是否包含元素,忽略大小写
 	 *
 	 * @param array 数组

+ 28 - 8
hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java

@@ -127,6 +127,26 @@ public class ArrayUtilTest {
 	}
 
 	@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"};
 		Integer[] values = {1, 2, 3};
@@ -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<String> 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"};