Java集合工具类(三)-泛型集合工具类,用于便捷快速的定义、操作集合。包含Set的交集、并集...
2012-08-28 15:37
781 查看
/*
用该方法来代替
{@code new LinkedList<E>()} 方式获得新的
{@code java.util.Queue} 的实例对象。
@param <E>
{@code Queue<E>} 中保存的对象。
@return 返回
{@code java.util.Queue<E>} 关于
{@code java.util.LinkedList<E>} 实现的新实例。
/
public static <E> Queue<E> getQueue() {
return new LinkedList<E>();
}
/**
* 合并两个有相同元素类型的 {@code java.util.Set}。
* <ul>
* <li>{@code setA == null && setB == null} --> 返回 {@link #getHashSet()}。</li>
* <li>{@code setA != null && setB == null} --> 返回 {@code setA}。</li>
* <li>{@code setA == null && setB != null} --> 返回 {@code setB}。</li>
* <li>{@code setA != null && setB != null} --> 返回 {@code setA} 和 {@code setB} 的并集。
* </li>
* </ul>
*
* @param <T> {@code Set} 中保存的对象。
* @param setA 第一个 {@code Set}。
* @param setB 第二个 {@code Set}。
* @return 返回 {@code setA} 和 {@code setB} 的并集。
*/
public static <T> Set<T> unionHashSet(Set<T> setA, Set<T> setB) {
boolean isEmptySetA = ObjectUtils.isEmpty(setA);
boolean isEmptySetB = ObjectUtils.isEmpty(setB);
if (isEmptySetA && isEmptySetB)
return getHashSet();
if (isEmptySetA && !isEmptySetB)
return setB;
if (!isEmptySetA && isEmptySetB)
return setA;
Set<T> result = getHashSet(setA);
result.addAll(setB);
return result;
}
/**
* 取两个有相同元素类型的 {@code java.util.Set} 的交集,即公共部份的新的 {@code java.util.Set}。
* <ul>
* <li>{@code setA == null && setB == null} --> 返回 {@code null}。</li>
* <li>{@code setA != null && setB == null} --> 返回 {@code null}。</li>
* <li>{@code setA == null && setB != null} --> 返回 {@code null}。</li>
* <li>{@code setA != null && setB != null} --> 返回 {@code setA} 和 {@code setB} 的交集。
* </li>
* </ul>
*
* @param <T> {@code Set} 中保存的对象。
* @param setA 第一个 {@code Set}。
* @param setB 第二个 {@code Set}。
* @return 返回 {@code setA} 和 {@code setB} 的交集。
*/
public static <T> Set<T> intersectHashSet(Set<T> setA, Set<T> setB) {
if (ObjectUtils.isEmpty(setA) || ObjectUtils.isEmpty(setB))
return null;
Set<T> result = getHashSet(setA);
result.retainAll(setB);
return result;
}
/**
* 移除 {@code setA} 中那些包含在 {@code setB} 中的元素。<br />
* 此方法不会修改 {@code setA},只是复制一份作相应操作,返回的是全新的 {@code Set} 对象。
* <ul>
* <li>{@code setA == null} --> 返回 {@code null}。</li>
* <li>{@code setB == null} --> 返回 {@code setA}。</li>
* <li>{@code setA != null && setB != null} --> 返回 {@code setA} 和 {@code setB}
* 的不对称差集。</li>
* </ul>
*
* @param <T> {@code Set} 中保存的对象。
* @param setA 第一个 {@code Set}。
* @param setB 第二个 {@code Set}。
* @return 返回 {@code setA} 和 {@code setB} 的不对称差集。
*/
public static <T> Set<T> differenceHashSet(Set<T> setA, Set<T> setB) {
if (ObjectUtils.isEmpty(setA))
return null;
if (ObjectUtils.isEmpty(setB))
return setA;
Set<T> result = getHashSet(setA);
result.removeAll(setB);
return result;
}
/**
* 取两个有相同元素类型的 {@code java.util.Set} 的补集。
*
* @param <T> {@code Set} 中保存的对象。
* @param setA 第一个 {@code Set}。
* @param setB 第二个 {@code Set}。
* @return 返回 {@code setA} 和 {@code setB} 的补集。
*/
public static <T> Set<T> complementHashSet(Set<T> setA, Set<T> setB) {
return differenceHashSet(unionHashSet(setA, setB), intersectHashSet(setA, setB));
}
}
用该方法来代替
{@code new LinkedList<E>()} 方式获得新的
{@code java.util.Queue} 的实例对象。
@param <E>
{@code Queue<E>} 中保存的对象。
@return 返回
{@code java.util.Queue<E>} 关于
{@code java.util.LinkedList<E>} 实现的新实例。
/
public static <E> Queue<E> getQueue() {
return new LinkedList<E>();
}
/**
* 合并两个有相同元素类型的 {@code java.util.Set}。
* <ul>
* <li>{@code setA == null && setB == null} --> 返回 {@link #getHashSet()}。</li>
* <li>{@code setA != null && setB == null} --> 返回 {@code setA}。</li>
* <li>{@code setA == null && setB != null} --> 返回 {@code setB}。</li>
* <li>{@code setA != null && setB != null} --> 返回 {@code setA} 和 {@code setB} 的并集。
* </li>
* </ul>
*
* @param <T> {@code Set} 中保存的对象。
* @param setA 第一个 {@code Set}。
* @param setB 第二个 {@code Set}。
* @return 返回 {@code setA} 和 {@code setB} 的并集。
*/
public static <T> Set<T> unionHashSet(Set<T> setA, Set<T> setB) {
boolean isEmptySetA = ObjectUtils.isEmpty(setA);
boolean isEmptySetB = ObjectUtils.isEmpty(setB);
if (isEmptySetA && isEmptySetB)
return getHashSet();
if (isEmptySetA && !isEmptySetB)
return setB;
if (!isEmptySetA && isEmptySetB)
return setA;
Set<T> result = getHashSet(setA);
result.addAll(setB);
return result;
}
/**
* 取两个有相同元素类型的 {@code java.util.Set} 的交集,即公共部份的新的 {@code java.util.Set}。
* <ul>
* <li>{@code setA == null && setB == null} --> 返回 {@code null}。</li>
* <li>{@code setA != null && setB == null} --> 返回 {@code null}。</li>
* <li>{@code setA == null && setB != null} --> 返回 {@code null}。</li>
* <li>{@code setA != null && setB != null} --> 返回 {@code setA} 和 {@code setB} 的交集。
* </li>
* </ul>
*
* @param <T> {@code Set} 中保存的对象。
* @param setA 第一个 {@code Set}。
* @param setB 第二个 {@code Set}。
* @return 返回 {@code setA} 和 {@code setB} 的交集。
*/
public static <T> Set<T> intersectHashSet(Set<T> setA, Set<T> setB) {
if (ObjectUtils.isEmpty(setA) || ObjectUtils.isEmpty(setB))
return null;
Set<T> result = getHashSet(setA);
result.retainAll(setB);
return result;
}
/**
* 移除 {@code setA} 中那些包含在 {@code setB} 中的元素。<br />
* 此方法不会修改 {@code setA},只是复制一份作相应操作,返回的是全新的 {@code Set} 对象。
* <ul>
* <li>{@code setA == null} --> 返回 {@code null}。</li>
* <li>{@code setB == null} --> 返回 {@code setA}。</li>
* <li>{@code setA != null && setB != null} --> 返回 {@code setA} 和 {@code setB}
* 的不对称差集。</li>
* </ul>
*
* @param <T> {@code Set} 中保存的对象。
* @param setA 第一个 {@code Set}。
* @param setB 第二个 {@code Set}。
* @return 返回 {@code setA} 和 {@code setB} 的不对称差集。
*/
public static <T> Set<T> differenceHashSet(Set<T> setA, Set<T> setB) {
if (ObjectUtils.isEmpty(setA))
return null;
if (ObjectUtils.isEmpty(setB))
return setA;
Set<T> result = getHashSet(setA);
result.removeAll(setB);
return result;
}
/**
* 取两个有相同元素类型的 {@code java.util.Set} 的补集。
*
* @param <T> {@code Set} 中保存的对象。
* @param setA 第一个 {@code Set}。
* @param setB 第二个 {@code Set}。
* @return 返回 {@code setA} 和 {@code setB} 的补集。
*/
public static <T> Set<T> complementHashSet(Set<T> setA, Set<T> setB) {
return differenceHashSet(unionHashSet(setA, setB), intersectHashSet(setA, setB));
}
}
相关文章推荐
- Java集合工具类(一)-泛型集合工具类,用于便捷快速的定义、操作集合。包含Set的交集、并集...
- Java集合工具类(二)-泛型集合工具类,用于便捷快速的定义、操作集合。包含Set的交集、并集...
- java guava 集合的操作:交集、差集、并集
- javaSet集合的并集、差集、交集
- 定义元素类型为int、元素个数不受限制的集合类Set, 包括:<=(包含于)、==(相等)、!=(不等)、 |(并集)、 &(交集)、-(差集)、+=(增加元素)、-=(删除元素)等操作
- Python 集合set()添加删除、交集、并集、集合操作详解
- Java复习-操作集合的工具类collections List,Set,Map区别
- Python 集合set添加删除、交集、并集、集合操作符号
- JAVA Set集合---并集,交集,差集
- Python 集合set()添加删除、交集、并集、集合操作详解
- java的集合操作(交集、并集、差集)整理
- Java set集合 交集,并集,差集
- Python 集合set添加删除、交集、并集、集合操作符号
- Python 集合set()添加删除、交集、并集、集合操作详解
- java集合操作-----求两个集合的交集和并集
- Python 集合set添加删除、交集、并集、集合操作符号
- java集合操作-----求两个集合的交集和并集
- java集合(交集,并集,差集)
- 黑马程序员_java_集合框架_Collection_List_Set_泛型
- Java操作集合的工具类