JAVA 의 집합 교차 집합 작업

3833 단어 자바
업무 중 에는 서로 다른 집합 중의 같은 요소, 서로 다른 요소 등 이 필요 하 다.교차 하 는 집합 작업 도구 류 를 만 들 었 습 니 다. 주로 removeAll, addAll 은 set 를 사용 하여 만 들 었 습 니 다. 중복 을 제거 하려 고 합 니 다.
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;

/**
 *     .
 * 
 *      ‘  ’‘  ’‘  ’  :<br>
 *   :addAll.<br>
 *   :retainAll.<br>
 *   :removeAll.<br>
 * 
 * @since Apr 8, 2014
 * 
 */
public class SetOptUtils {

	/**
	 *      .
	 * <P>
	 * Example:
	 * 
	 * <pre>
	 * src={1,2,3},dest={2,4}
	 * intersect(dest,src)={2}
	 * </pre>
	 * 
	 * @param dest
	 *            The destination set.
	 * @param src
	 *            The source set.
	 * @return the same elements of src and dest
	 */
	public static <T> Set<T> intersect(Set<T> dest, Set<T> src) {
		Set<T> set = new HashSet<T>(src.size());
		copy(set, src);
		set.retainAll(dest);
		return set;
	}

	/**
	 *      .
	 * <P>
	 * Example:
	 * 
	 * <pre>
	 * src={1,2,3},dest={2,4,5}
	 * union(dest,src)={1,2,3,4,5}
	 * </pre>
	 * 
	 * @param dest
	 *            The destination set.
	 * @param src
	 *            The source set.
	 * @return the all elements of src and dest
	 */
	public static <T> Set<T> union(Set<T> dest, Set<T> src) {
		Set<T> set = new HashSet<T>(src.size());
		copy(set, src);
		set.addAll(dest);
		return set;
	}

	/**
	 *      (  ).
	 * <P>
	 * Example:
	 * 
	 * <pre>
	 * src={1,2,3},dest={2,4,5},src-dest={1,3}
	 * diff(dest,src)={1,3}
	 * </pre>
	 * 
	 * @param dest
	 *            The destination set.
	 * @param src
	 *            The source set.
	 * @return the elements in src but not exist dest
	 */
	public static <T> Set<T> diff(Set<T> dest, Set<T> src) {
		Set<T> set = new HashSet<T>(src.size());
		copy(set, src);
		set.removeAll(dest);
		return set;
	}

	/**
	 *     .
	 * 
	 * @param c
	 *            The source collection.
	 * @return true/false
	 */
	public static boolean isEmpty(Collection<?> c) {
		boolean rs = false;
		if (c == null || (c != null && c.isEmpty())) {
			rs = true;
		}
		return rs;
	}

	/**
	 *              .
	 * @param dest The destination set.
	 * @param src The source list.
	 * @return true/false
	 */
	public static <T> boolean isSameElements(Set<T> dest, Set<T> src) {
		if (isEmpty(dest) || isEmpty(src)) {
			return false;
		}

		Set<T> set = intersect(dest, src);
		if (set.size() > 0) {
			return true;
		}

		return false;
	}

	/**
	 * Copies all of the elements from src set into dest.
	 * 
	 * @param dest
	 *            The destination set.
	 * @param src
	 *            The source list.
	 */
	private static <T> void copy(Set<T> dest, Set<T> src) {
		dest.addAll(src);
	}

	public static void main(String[] args) {
		Set<String> set = new HashSet<String>();
		Set<String> set2 = new HashSet<String>();
		set2.add("010W");
		System.out.println(diff(set2, set));
	}

}

 무 거 운 것 이 필요 하지 않 으 면 List 를 사용 해서 도 조작 할 수 있다.

좋은 웹페이지 즐겨찾기