@SafeVarargs
	public static <T> List<T> unionAll(Collection<T> coll1, Collection<T> coll2, Collection<T>... otherColls) {
		if (CollUtil.isEmpty(coll1) && CollUtil.isEmpty(coll2) && ArrayUtil.isEmpty(otherColls)) {
			return new ArrayList<>(0);
		}

		// 计算元素总数
		int totalSize = 0;
		totalSize += size(coll1);
		totalSize += size(coll2);
		if (otherColls != null) {
			for (final Collection<T> otherColl : otherColls) {
				totalSize += size(otherColl);
			}
		}

		// 根据size创建，防止多次扩容
		final List<T> res = new ArrayList<>(totalSize);
		if (coll1 != null) {
			res.addAll(coll1);
		}
		if (coll2 != null) {
			res.addAll(coll2);
		}
		if (otherColls == null) {
			return res;
		}

		for (final Collection<T> otherColl : otherColls) {
			if (otherColl != null) {
				res.addAll(otherColl);
			}
		}

		return res;
	}
@SuppressWarnings({"ConfusingArgumentToVarargsMethod", "ConstantValue"})
	@Test
	public void unionAllNullTest() {
		final List<String> list1 = new ArrayList<>();
		final List<String> list2 = null;
		final List<String> list3 = null;
		final List<String> list = CollUtil.unionAll(list1, list2, list3);
		assertNotNull(list);

		final List<String> resList2 = CollUtil.unionAll(null, null, null);
		assertNotNull(resList2);
	}