docs: public static <T> List<T> intersection(final List<? extends T> list1, final List<? extends T> list2) {
  		List<? extends T> smaller = list1;
  		List<? extends T> larger = list2;
  		if (list1.size() > list2.size()) {
  			smaller = list2;
  			larger = list1;
  		}
  
  		// 克隆一个可修改的副本
  		List<T> newSmaller = new ArrayList<T>(smaller);
  		List<T> result = new ArrayList<T>(smaller.size());
  		for (final T e : larger) {
  			if (newSmaller.contains(e)) {
  				result.add(e);
  				newSmaller.remove(e);
  			}
  		}
  		return result;
  	}