code: public static <T> Collection<T> union(Collection<T> coll1, Collection<T> coll2) {
  		final ArrayList<T> list = new ArrayList<>();
  		if (isEmpty(coll1)) {
  			list.addAll(coll2);
  		} else if (isEmpty(coll2)) {
  			list.addAll(coll1);
  		} else {
  			final Map<T, Integer> map1 = countMap(coll1);
  			final Map<T, Integer> map2 = countMap(coll2);
  			final Set<T> elts = newHashSet(coll2);
  			elts.addAll(coll1);
  			int m;
  			for (T t : elts) {
  				m = Math.max(Convert.toInt(map1.get(t), 0), Convert.toInt(map2.get(t), 0));
  				for (int i = 0; i < m; i++) {
  					list.add(t);
  				}
  			}
  		}
  		return list;
  	}
docs: 两个集合的并集<br>
  针对一个集合中存在多个相同元素的情况，计算两个集合中此元素的个数，保留最多的个数<br>
  例如：集合1：[a, b, c, c, c]，集合2：[a, b, c, c]<br>
  结果：[a, b, c, c, c]，此结果中只保留了三个c
  
  @param <T> 集合元素类型
  @param coll1 集合1
  @param coll2 集合2
  @return 并集的集合，返回 {@link ArrayList}