Java集合工具类详解编程语言
2023-06-13 09:20:29 时间
泛型集合工具类,用于便捷快速的定义、操作集合。包含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 * 如果要获得一个 [email protected] Map String, String } 的对象,可以通过下面的方式实现: * [email protected] Map String, String map = GenericUtils.getMap();}。但是不能直接作为参数使用,例如有这样一个方法: * [email protected] 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 { /** * 用该方法来代替 [email protected] new HashMap K, V ()} 方式获得新的 [email protected] java.util.Map} 的实例对象。 * @param K [email protected] Map} 中的键对象。 * @param V [email protected] Map} 中的值对象。 * @return 返回 [email protected] java.util.Map K, V } 关于 [email protected] java.util.HashMap K, V } 实现的新实例。 public static K, V Map K, V getMap() { return new HashMap K, V /** * 用该方法来代替 [email protected] new HashMap K, V (int)} 方式获得新的 [email protected] java.util.Map} 的实例对象。 * @param K [email protected] Map} 中的键对象。 * @param V [email protected] Map} 中的值对象。 * @param initialCapacity 初始容量。 * @return 返回 [email protected] java.util.Map K, V } 关于 [email protected] java.util.HashMap K, V } 实现的新实例。 public static K, V Map K, V getMap(int initialCapacity) { return new HashMap K, V (initialCapacity); /** * 用该方法来代替 [email protected] new ConcurrentHashMap K, V ()} 方式获得新的 [email protected] java.util.Map} 的实例对象。 * @param K [email protected] Map} 中的键对象。 * @param V [email protected] Map} 中的值对象。 * @return 返回 [email protected] java.util.Map K, V } 关于 * [email protected] java.util.concurrent.ConcurrentHashMap K, V } 实现的新实例。 public static K, V Map K, V getConcurrentMap() { return new ConcurrentHashMap K, V /** * 用该方法来代替 [email protected] new ConcurrentHashMap K, V (int)} 方式获得新的 [email protected] java.util.Map} * 的实例对象。 * @param K [email protected] Map} 中的键对象。 * @param V [email protected] Map} 中的值对象。 * @param initialCapacity 初始容量。 * @return 返回 [email protected] java.util.Map K, V } 关于 * [email protected] java.util.concurrent.ConcurrentHashMap K, V } 实现的新实例。 public static K, V Map K, V getConcurrentMap(int initialCapacity) { return new ConcurrentHashMap K, V (initialCapacity); /** * 用该方法来代替 [email protected] new LinkedHashMap K, V ()} 方式获得新的 [email protected] java.util.Map} 的实例对象。 * @param K [email protected] Map} 中的键对象。 * @param V [email protected] Map} 中的值对象。 * @return 返回 [email protected] java.util.Map K, V } 关于 [email protected] java.util.LinkedHashMap K, V } * 实现的新实例。 public static K, V Map K, V getLinkedMap() { return new LinkedHashMap K, V /** * 用该方法来代替 [email protected] new LinkedHashMap K, V (int)} 方式获得新的 [email protected] java.util.Map} 的实例对象。 * @param K [email protected] Map} 中的键对象。 * @param V [email protected] Map} 中的值对象。 * @param initialCapacity 初始容量。 * @return 返回 [email protected] java.util.Map K, V } 关于 [email protected] java.util.LinkedHashMap K, V } * 实现的新实例。 public static K, V Map K, V getLinkedMap(int initialCapacity) { return new LinkedHashMap K, V (initialCapacity); /** * 用该方法来代替 [email protected] new TreeMap K, V ()} 方式获得新的 [email protected] java.util.Map} 的实例对象。 * @param K [email protected] Map} 中的键对象。 * @param V [email protected] Map} 中的值对象。 * @return 返回 [email protected] java.util.Map K, V } 关于 [email protected] java.util.TreeMap K, V } 实现的新实例。 public static K, V Map K, V getTreeMap() { return new TreeMap K, V /** * 用该方法来代替 [email protected] new ConcurrentHashMap K, V ()} 方式获得新的 * [email protected] java.util.concurrent.ConcurrentHashMap} 的实例对象。 * @param K [email protected] Map} 中的键对象。 * @param V [email protected] Map} 中的值对象。 * @return 返回 [email protected] java.util.concurrent.ConcurrentMap K, V } 关于 * [email protected] java.util.concurrent.ConcurrentHashMap K, V } 实现的新实例。 public static K, V ConcurrentMap K, V getConcurrentHashMap() { return new ConcurrentHashMap K, V /** * 用该方法来代替 [email protected] new ConcurrentHashMap K, V (int)} 方式获得新的 * [email protected] java.util.concurrent.ConcurrentHashMap} 的实例对象。 * @param K [email protected] Map} 中的键对象。 * @param V [email protected] Map} 中的值对象。 * @param initialCapacity 初始容量。 * @return 返回 [email protected] java.util.concurrent.ConcurrentMap K, V } 关于 * [email protected] java.util.concurrent.ConcurrentHashMap K, V } 实现的新实例。 public static K, V ConcurrentMap K, V getConcurrentHashMap(int initialCapacity) { return new ConcurrentHashMap K, V (initialCapacity); /** * 用该方法来代替 [email protected] new ArrayList T ()} 方式获得新的 [email protected] java.util.List} 的实例对象。 * @param T [email protected] List T } 中保存的对象。 * @return 返回 [email protected] java.util.List T } 关于 [email protected] java.util.ArrayList T } 实现的新实例。 public static T List T getList() { return new ArrayList T /** * 用该方法来代替 [email protected] new ArrayList T (int)} 方式获得新的 [email protected] java.util.List} 的实例对象。 * @param T [email protected] List T } 中保存的对象。 * @param initialCapacity 列表的初始容量。 * @return 返回 [email protected] java.util.List T } 关于 [email protected] java.util.ArrayList T } 实现的新实例。 public static T List T getList(int initialCapacity) { return new ArrayList T (initialCapacity); /** * 用该方法来代替 [email protected] new ArrayList T ()} 方式获得新的 [email protected] java.util.List} 的实例对象。 * @param T [email protected] List T } 中保存的对象。 * @param c 其中的元素将存放在新的 [email protected] list} 中的 [email protected] collection}。 * @return 返回 [email protected] java.util.List T } 关于 [email protected] java.util.ArrayList T } 实现的新实例。 public static T List T getList(Collection ? extends T c) { if (ObjectUtils.isNotEmpty(c)) return new ArrayList T return new ArrayList T /** * 用该方法来代替 [email protected] new LinkedList T ()} 方式获得新的 [email protected] java.util.List} 的实例对象。 * @param T [email protected] List T } 中保存的对象。 * @return 返回 [email protected] java.util.List T } 关于 [email protected] java.util.LinkedList T } 实现的新实例。 public static T List T getLinkedList() { return new LinkedList T /** * 用该方法来代替 [email protected] new HashSet T ()} 方式获得新的 [email protected] java.util.Set} 的实例对象。 * @param T [email protected] Set T } 中保存的对象。 * @return 返回 [email protected] java.util.Set T } 关于 [email protected] java.util.HashSet T } 实现的新实例。 public static T Set T getHashSet() { return new HashSet T /** * 用该方法来代替 [email protected] new HashSet T (int)} 方式获得新的 [email protected] java.util.Set} 的实例对象。 * @param T [email protected] Set T } 中保存的对象。 * @param initialCapacity 列表的初始容量。 * @return 返回 [email protected] java.util.Set T } 关于 [email protected] java.util.HashSet T } 实现的新实例。 public static T Set T getHashSet(int initialCapacity) { return new HashSet T (initialCapacity); /** * 用该方法来代替 code new HashSet T (Collection ? extends T c) /code 方式获得新的 * [email protected] java.util.Set} 的实例对象。 * @param T [email protected] Set} 中保存的对象。 * @param c 其中的元素将存放在新的 [email protected] set} 中的 [email protected] collection}。 * @return 返回 [email protected] java.util.Set T } 关于 [email protected] java.util.HashSet T } 实现的新实例。 public static T Set T getHashSet(Collection ? extends T c) { if (ObjectUtils.isEmpty(c)) return new HashSet T return new HashSet T /** * 用该方法来代替 [email protected] new TreeSet T ()} 方式获得新的 [email protected] java.util.Set} 的实例对象。 * @param T [email protected] Set T } 中保存的对象。 * @return 返回 [email protected] java.util.Set T } 关于 [email protected] java.util.TreeSet T } 实现的新实例。 public static T Set T getTreeSet() { return new TreeSet T /** * 用该方法来代替 code new TreeSet T (Collection ? extends T c) /code 方式获得新的 * {@code java.util.Set} 的实例对象。 * @param T {@code Set} 中保存的对象。 * @param c 其中的元素将存放在新的 {@code set} 中的 {@code collection}。 * @return 返回 {@code java.util.Set T } 关于 {@code java.util.TreeSet T } 实现的新实例。 public static T Set T getTreeSet(Collection ? extends T c) { if (ObjectUtils.isEmpty(c)) return new TreeSet T return new TreeSet T /** * 用该方法来代替 {@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)); }
10531.html
cjava相关文章
- java分布式事务框架_Java分布式事务,及解决方案
- Java编译时类型和运行时类型「建议收藏」
- c++和java哪个好学_c++语言和Java语言,初学者该如何选择?「建议收藏」
- java技术介绍_Java技术汇总
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- VSCODE 打造完美java开发环境「建议收藏」
- 【说站】java反射机制原理详解
- 【说站】java中Class类的概念介绍
- Java扩展工具使用说明补充
- java executeupdate_Java自学-JDBC execute与executeUpdate的区别
- java 缓存工具类初始化_Java缓存框架
- 有没有一个在线工具可以将Python代码转换为Java代码?
- java基础之switch语句的深入解析详解编程语言
- 查看java性能Linux下JStat工具深度分析Java性能(linuxjstat)
- 技术的融合突破极限:Java与Redis的技术融合(java与redis)
- 分布式Java实现Redis分布式:从入门到精通(java实现redis)
- Java轻松使用Redis实现数据高效存储(java使用redis)
- Java字节码简单介绍
- 如何在Linux系统下成功安装Java?(linux下安装java)
- 数据库以Java运行环境构建基于Oracle的数据库(java创建oracle)
- Java实现Redis计数器功能(redis计数 java)
- Java用文件流下载网络文件示例代码