public static <T> Collection<T> subtract(Collection<T> coll1, Collection<T> coll2) {
		if(isEmpty(coll1) || isEmpty(coll2)){
			return coll1;
		}

		Collection<T> result = ObjectUtil.clone(coll1);
		try {
			if (null == result) {
				result = CollUtil.create(coll1.getClass());
				result.addAll(coll1);
			}
			result.removeAll(coll2);
		} catch (UnsupportedOperationException e) {
			// 针对 coll1 为只读集合的补偿
			result = CollUtil.create(AbstractCollection.class);
			result.addAll(coll1);
			result.removeAll(coll2);
		}
		return result;
	}
@Test
	public void subtractTest() {
		final List<String> list1 = CollUtil.newArrayList("a", "b", "b", "c", "d", "x");
		final List<String> list2 = CollUtil.newArrayList("a", "b", "b", "b", "c", "d", "x2");
		final Collection<String> subtract = CollUtil.subtract(list1, list2);
		assertEquals(1, subtract.size());
		assertEquals("x", subtract.iterator().next());
	}