• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Java集合工具类

java 搞代码 4年前 (2022-01-09) 24次浏览 已收录 0个评论

泛型集合工具类,用于便捷快速的定义、操作集合。包含Set的交集、并集、差集、补集等操作。

import java.util.Set;import java.util.Map;import java.util.List;import java.util.Queue;import java.util.HashSet;import java.util.HashMap;import java.util.TreeMap;import java.util.TreeSet;import java.util.ArrayList;import java.util.Collection;import java.util.LinkedList;import java.util.LinkedHashMap;import java.util.concurrent.ConcurrentHashMap;import java.util.concurrent.ConcurrentMap;  /** * 包含获得各种集合对象的常用方法的泛型工具类。 * <p> * 如果要获得一个 {@code Map} 的对象,可以通过下面的方式实现: * {@literal Map map = GenericUtils.getMap();}。但是不能直接作为参数使用,例如有这样一个方法: * {@literal setInfo(Map)},不能直接这样调用:<s> * <code>setInfo(GenericUtils.getMap())</code></s> * </p> *  * @author Fuchun * @version $Id: GenericUtils.java 4754 2011-03-26 19:50 fuchun $ */public class GenericUtils {      /**     * 用该方法来代替 {@code new HashMap()} 方式获得新的 {@code java.util.Map} 的实例对象。     *      * @param  {@code Map} 中的键对象。     * @param  {@code Map} 中的值对象。     * @return 返回 {@code java.util.Map} 关于 {@code java.util.HashMap} 实现的新实例。     */    public static  Map getMap() {        return new HashMap();    }      /**     * 用该方法来代替 {@code new HashMap(int)} 方式获得新的 {@code java.util.Map} 的实例对象。     *      * @param  {@code Map} 中的键对象。     * @param  {@code Map} 中的值对象。     * @param initialCapacity 初始容量。     * @return 返回 {@code java.util.Map} 关于 {@code java.util.HashMap} 实现的新实例。     */    public static  Map getMap(int initialCapacity) {        return new HashMap(initialCapacity);    }      /**     * 用该方法来代替 {@code new ConcurrentHashMap()} 方式获得新的 {@code java.util.Map} 的实例对象。     *      * @param  {@code Map} 中的键对象。     * @param  {@code Map} 中的值对象。     * @return 返回 {@code java.util.Map} 关于     *         {@code java.util.concurrent.ConcurrentHashMap} 实现的新实例。     */    public static  Map getConcurrentMap() {        return new ConcurrentHashMap();    }      /**     * 用该方法来代替 {@code new ConcurrentHashMap(int)} 方式获得新的 {@code java.util.Map}     * 的实例对象。     *      * @param  {@code Map} 中的键对象。     * @param  {@code Map} 中的值对象。     * @param initialCapacity 初始容量。     * @return 返回 {@code java.util.Map} 关于     *         {@code java.util.concurrent.ConcurrentHashMap} 实现的新实例。     */    public static  Map getConcurrentMap(int initialCapacity) {        return new ConcurrentHashMap(initialCapacity);    }      /**     * 用该方法来代替 {@code new LinkedHashMap()} 方式获得新的 {@code java.util.Map} 的实例对象。     *      * @param  {@code Map} 中的键对象。     * @param  {@code Map} 中的值对象。     * @return 返回 {@code java.util.Map} 关于 {@code java.util.LinkedHashMap}     *         实现的新实例。     */    public static  Map getLinkedMap() {        return new LinkedHashMap();    }      /**     * 用该方法来代替 {@code new LinkedHashMap(int)} 方式获得新的 {@code java.util.Map} 的实例对象。     *      * @param  {@code Map} 中的键对象。     * @param  {@code Map} 中的值对象。     * @param initialCapacity 初始容量。     * @return 返回 {@code java.util.Map} 关于 {@<b style="color:transparent">来&源gao@dai!ma.com搞$代^码%网</b>code java.util.LinkedHashMap}     *         实现的新实例。     */    public static  Map getLinkedMap(int initialCapacity) {        return new LinkedHashMap(initialCapacity);    }      /**     * 用该方法来代替 {@code new TreeMap()} 方式获得新的 {@code java.util.Map} 的实例对象。     *      * @param  {@code Map} 中的键对象。     * @param  {@code Map} 中的值对象。     * @return 返回 {@code java.util.Map} 关于 {@code java.util.TreeMap} 实现的新实例。     */    public static  Map getTreeMap() {        return new TreeMap();    }      /**     * 用该方法来代替 {@code new ConcurrentHashMap()} 方式获得新的     * {@code java.util.concurrent.ConcurrentHashMap} 的实例对象。     *      * @param  {@code Map} 中的键对象。     * @param  {@code Map} 中的值对象。     * @return 返回 {@code java.util.concurrent.ConcurrentMap} 关于     *         {@code java.util.concurrent.ConcurrentHashMap} 实现的新实例。     */    public static  ConcurrentMap getConcurrentHashMap() {        return new ConcurrentHashMap();    }      /**     * 用该方法来代替 {@code new ConcurrentHashMap(int)} 方式获得新的     * {@code java.util.concurrent.ConcurrentHashMap} 的实例对象。     *      * @param  {@code Map} 中的键对象。     * @param  {@code Map} 中的值对象。     * @param initialCapacity 初始容量。     * @return 返回 {@code java.util.concurrent.ConcurrentMap} 关于     *         {@code java.util.concurrent.ConcurrentHashMap} 实现的新实例。     */    public static  ConcurrentMap getConcurrentHashMap(int initialCapacity) {        return new ConcurrentHashMap(initialCapacity);    }      /**     * 用该方法来代替 {@code new ArrayList()} 方式获得新的 {@code java.util.List} 的实例对象。     *      * @param  {@code List} 中保存的对象。     * @return 返回 {@code java.util.List} 关于 {@code java.util.ArrayList} 实现的新实例。     */    public static  List getList() {        return new ArrayList();    }      /**     * 用该方法来代替 {@code new ArrayList(int)} 方式获得新的 {@code java.util.List} 的实例对象。     *      * @param  {@code List} 中保存的对象。     * @param initialCapacity 列表的初始容量。     * @return 返回 {@code java.util.List} 关于 {@code java.util.ArrayList} 实现的新实例。     */    public static  List getList(int initialCapacity) {        return new ArrayList(initialCapacity);    }      /**     * 用该方法来代替 {@code new ArrayList()} 方式获得新的 {@code java.util.List} 的实例对象。     *      * @param  {@code List} 中保存的对象。     * @param c 其中的元素将存放在新的 {@code list} 中的 {@code collection}。     * @return 返回 {@code java.util.List} 关于 {@code java.util.ArrayList} 实现的新实例。     */    public static  List getList(Collection<? extends T> c) {        if (ObjectUtils.isNotEmpty(c))            return new ArrayList(c);        return new ArrayList();    }      /**     * 用该方法来代替 {@code new LinkedList()} 方式获得新的 {@code java.util.List} 的实例对象。     *      * @param  {@code List} 中保存的对象。     * @return 返回 {@code java.util.List} 关于 {@code java.util.LinkedList} 实现的新实例。     */    public static  List getLinkedList() {        return new LinkedList();    }      /**     * 用该方法来代替 {@code new HashSet()} 方式获得新的 {@code java.util.Set} 的实例对象。     *      * @param  {@code Set} 中保存的对象。     * @return 返回 {@code java.util.Set} 关于 {@code java.util.HashSet} 实现的新实例。     */    public static  Set getHashSet() {        return new HashSet();    }      /**     * 用该方法来代替 {@code new HashSet(int)} 方式获得新的 {@code java.util.Set} 的实例对象。     *      * @param  {@code Set} 中保存的对象。     * @param initialCapacity 列表的初始容量。     * @return 返回 {@code java.util.Set} 关于 {@code java.util.HashSet} 实现的新实例。     */    public static  Set getHashSet(int initialCapacity) {        return new HashSet(initialCapacity);    }      /**     * 用该方法来代替 <code>new HashSet(Collection<? extends T> c)</code> 方式获得新的     * {@code java.util.Set} 的实例对象。     *      * @param  {@code Set} 中保存的对象。     * @param c 其中的元素将存放在新的 {@code set} 中的 {@code collection}。     * @return 返回 {@code java.util.Set} 关于 {@code java.util.HashSet} 实现的新实例。     */    public static  Set getHashSet(Collection<? extends T> c) {        if (ObjectUtils.isEmpty(c))            return new HashSet();        return new HashSet(c);    }      /**     * 用该方法来代替 {@code new TreeSet()} 方式获得新的 {@code java.util.Set} 的实例对象。     *      * @param  {@code Set} 中保存的对象。     * @return 返回 {@code java.util.Set} 关于 {@code java.util.TreeSet} 实现的新实例。     */    public static  Set getTreeSet() {        return new TreeSet();    }      /**     * 用该方法来代替 <code>new TreeSet(Collection<? extends T> c)</code> 方式获得新的     * {@code java.util.Set} 的实例对象。     *      * @param  {@code Set} 中保存的对象。     * @param c 其中的元素将存放在新的 {@code set} 中的 {@code collection}。     * @return 返回 {@code java.util.Set} 关于 {@code java.util.TreeSet} 实现的新实例。     */    public static  Set getTreeSet(Collection<? extends T> c) {        if (ObjectUtils.isEmpty(c))            return new TreeSet();        return new TreeSet(c);    }      /**     * 用该方法来代替 {@code new LinkedList()} 方式获得新的 {@code java.util.Queue} 的实例对象。     *      * @param  {@code Queue} 中保存的对象。     * @return 返回 {@code java.util.Queue} 关于 {@code java.util.LinkedList} 实现的新实例。     */    public static  Queue getQueue() {        return new LinkedList();    }      /**     * 合并两个有相同元素类型的 {@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  {@code Set} 中保存的对象。     * @param setA 第一个 {@code Set}。     * @param setB 第二个 {@code Set}。     * @return 返回 {@code setA} 和 {@code setB} 的并集。     */    public static  Set unionHashSet(Set setA, Set 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 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  {@code Set} 中保存的对象。     * @param setA 第一个 {@code Set}。     * @param setB 第二个 {@code Set}。     * @return 返回 {@code setA} 和 {@code setB} 的交集。     */    public static  Set intersectHashSet(Set setA, Set setB) {        if (ObjectUtils.isEmpty(setA) || ObjectUtils.isEmpty(setB))            return null;        Set 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  {@code Set} 中保存的对象。     * @param setA 第一个 {@code Set}。     * @param setB 第二个 {@code Set}。     * @return 返回 {@code setA} 和 {@code setB} 的不对称差集。     */    public static  Set differenceHashSet(Set setA, Set setB) {        if (ObjectUtils.isEmpty(setA))            return null;        if (ObjectUtils.isEmpty(setB))            return setA;        Set result = getHashSet(setA);        result.removeAll(setB);        return result;    }      /**     * 取两个有相同元素类型的 {@code java.util.Set} 的补集。     *      * @param  {@code Set} 中保存的对象。     * @param setA 第一个 {@code Set}。     * @param setB 第二个 {@code Set}。     * @return 返回 {@code setA} 和 {@code setB} 的补集。     */    public static  Set complementHashSet(Set setA, Set setB) {        return differenceHashSet(unionHashSet(setA, setB), intersectHashSet(setA, setB));    }}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Java集合工具类
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址