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 079bcdc7a..1c55791e9 100755 --- a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java @@ -108,6 +108,9 @@ public class CollUtil { * @return 并集的集合,返回 {@link ArrayList} */ public static Collection union(Collection coll1, Collection coll2) { + if (isEmpty(coll1) && isEmpty(coll2)) { + return new ArrayList<>(); + } if (isEmpty(coll1)) { return new ArrayList<>(coll2); } else if (isEmpty(coll2)) { @@ -145,6 +148,9 @@ public class CollUtil { public static Collection union(Collection coll1, Collection coll2, Collection... otherColls) { Collection union = union(coll1, coll2); for (Collection coll : otherColls) { + if (isEmpty(coll)) { + continue; + } union = union(union, coll); } return union; @@ -177,6 +183,9 @@ public class CollUtil { if (ArrayUtil.isNotEmpty(otherColls)) { for (Collection otherColl : otherColls) { + if (isEmpty(otherColl)) { + continue; + } result.addAll(otherColl); } } @@ -211,6 +220,9 @@ public class CollUtil { if (ArrayUtil.isNotEmpty(otherColls)) { for (Collection otherColl : otherColls) { + if (isEmpty(otherColl)) { + continue; + } result.addAll(otherColl); } } 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 512b13e2d..fcf2505d0 100755 --- a/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java @@ -10,21 +10,7 @@ import lombok.Data; import org.junit.Assert; import org.junit.Test; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.SortedSet; +import java.util.*; /** * 集合工具类单元测试 @@ -908,6 +894,55 @@ public class CollUtilTest { Assert.assertEquals("bb", distinct.get(1).getName()); } + @Test + public void unionNullTest() { + List list1 = new ArrayList<>(); + List list2 = null; + List list3 = null; + Collection union = CollUtil.union(list1, list2, list3); + Assert.assertNotNull(union); + } + + @Test + public void unionDistinctNullTest() { + List list1 = new ArrayList<>(); + List list2 = null; + List list3 = null; + Set set = CollUtil.unionDistinct(list1, list2, list3); + Assert.assertNotNull(set); + } + + @Test + public void unionAllNullTest() { + List list1 = new ArrayList<>(); + List list2 = null; + List list3 = null; + List list = CollUtil.unionAll(list1, list2, list3); + Assert.assertNotNull(list); + } + + @Test + public void intersectionNullTest() { + List list1 = new ArrayList<>(); + list1.add("aa"); + List list2 = new ArrayList<>(); + list2.add("aa"); + List list3 = null; + Collection collection = CollUtil.intersection(list1, list2, list3); + Assert.assertNotNull(collection); + } + + @Test + public void intersectionDistinctNullTest() { + List list1 = new ArrayList<>(); + list1.add("aa"); + List list2 = null; + // list2.add("aa"); + List list3 = null; + Collection collection = CollUtil.intersectionDistinct(list1, list2, list3); + Assert.assertNotNull(collection); + } + @Data @AllArgsConstructor static class Person {