Java集合工具类(一)-泛型集合工具类,用于便捷快速的定义、操作集合。包含Set的交集、并集......

package com.sooal.tools;

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<String, String>} 的对象,可以通过下面的方式实现:
 * {@literal Map<String, String> map = GenericUtils.getMap();}。但是不能直接作为参数使用,例如有这样一个方法:
 * {@literal setInfo(Map<String, String>)},不能直接这样调用:<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<K, V>()} 方式获得新的 {@code java.util.Map} 的实例对象。
     *
     * @param <K> {@code Map} 中的键对象。
     * @param <V> {@code Map} 中的值对象。
     * @return 返回 {@code java.util.Map<K, V>} 关于 {@code java.util.HashMap<K, V>} 实现的新实例。
     */
    public static <K, V> Map<K, V> getMap() {
        return new HashMap<K, V>();
    }

    /**
     * 用该方法来代替 {@code new HashMap<K, V>(int)} 方式获得新的 {@code java.util.Map} 的实例对象。
     *
     * @param <K> {@code Map} 中的键对象。
     * @param <V> {@code Map} 中的值对象。
     * @param initialCapacity 初始容量。
     * @return 返回 {@code java.util.Map<K, V>} 关于 {@code java.util.HashMap<K, V>} 实现的新实例。
     */
    public static <K, V> Map<K, V> getMap(int initialCapacity) {
        return new HashMap<K, V>(initialCapacity);
    }

    /**
     * 用该方法来代替 {@code new ConcurrentHashMap<K, V>()} 方式获得新的 {@code java.util.Map} 的实例对象。
     *
     * @param <K> {@code Map} 中的键对象。
     * @param <V> {@code Map} 中的值对象。
     * @return 返回 {@code java.util.Map<K, V>} 关于
     *         {@code java.util.concurrent.ConcurrentHashMap<K, V>} 实现的新实例。
     */
    public static <K, V> Map<K, V> getConcurrentMap() {
        return new ConcurrentHashMap<K, V>();
    }

    /**
     * 用该方法来代替 {@code new ConcurrentHashMap<K, V>(int)} 方式获得新的 {@code java.util.Map}
     * 的实例对象。
     *
     * @param <K> {@code Map} 中的键对象。
     * @param <V> {@code Map} 中的值对象。
     * @param initialCapacity 初始容量。
     * @return 返回 {@code java.util.Map<K, V>} 关于
     *         {@code java.util.concurrent.ConcurrentHashMap<K, V>} 实现的新实例。
     */
    public static <K, V> Map<K, V> getConcurrentMap(int initialCapacity) {
        return new ConcurrentHashMap<K, V>(initialCapacity);
    }

    /**
     * 用该方法来代替 {@code new LinkedHashMap<K, V>()} 方式获得新的 {@code java.util.Map} 的实例对象。
     *
     * @param <K> {@code Map} 中的键对象。
     * @param <V> {@code Map} 中的值对象。
     * @return 返回 {@code java.util.Map<K, V>} 关于 {@code java.util.LinkedHashMap<K, V>}
     *         实现的新实例。
     */
    public static <K, V> Map<K, V> getLinkedMap() {
        return new LinkedHashMap<K, V>();
    }

    /**
     * 用该方法来代替 {@code new LinkedHashMap<K, V>(int)} 方式获得新的 {@code java.util.Map} 的实例对象。
     *
     * @param <K> {@code Map} 中的键对象。
     * @param <V> {@code Map} 中的值对象。
     * @param initialCapacity 初始容量。
     * @return 返回 {@code java.util.Map<K, V>} 关于 {@code java.util.LinkedHashMap<K, V>}
     *         实现的新实例。
     */
    public static <K, V> Map<K, V> getLinkedMap(int initialCapacity) {
        return new LinkedHashMap<K, V>(initialCapacity);
    }

    /**
     * 用该方法来代替 {@code new TreeMap<K, V>()} 方式获得新的 {@code java.util.Map} 的实例对象。
     *
     * @param <K> {@code Map} 中的键对象。
     * @param <V> {@code Map} 中的值对象。
     * @return 返回 {@code java.util.Map<K, V>} 关于 {@code java.util.TreeMap<K, V>} 实现的新实例。
     */
    public static <K, V> Map<K, V> getTreeMap() {
        return new TreeMap<K, V>();
    }

    /**
     * 用该方法来代替 {@code new ConcurrentHashMap<K, V>()} 方式获得新的
     * {@code java.util.concurrent.ConcurrentHashMap} 的实例对象。
     *
     * @param <K> {@code Map} 中的键对象。
     * @param <V> {@code Map} 中的值对象。
     * @return 返回 {@code java.util.concurrent.ConcurrentMap<K, V>} 关于
     *         {@code java.util.concurrent.ConcurrentHashMap<K, V>} 实现的新实例。
     */
    public static <K, V> ConcurrentMap<K, V> getConcurrentHashMap() {
        return new ConcurrentHashMap<K, V>();
    }

    /**
     * 用该方法来代替 {@code new ConcurrentHashMap<K, V>(int)} 方式获得新的
     * {@code java.util.concurrent.ConcurrentHashMap} 的实例对象。
     *
     * @param <K> {@code Map} 中的键对象。
     * @param <V> {@code Map} 中的值对象。
     * @param initialCapacity 初始容量。
     * @return 返回 {@code java.util.concurrent.ConcurrentMap<K, V>} 关于
     *         {@code java.util.concurrent.ConcurrentHashMap<K, V>} 实现的新实例。
     */
    public static <K, V> ConcurrentMap<K, V> getConcurrentHashMap(int initialCapacity) {
        return new ConcurrentHashMap<K, V>(initialCapacity);
    }

转载于:https://my.oschina.net/ly5156/blog/75202

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值