0

0

Java集合工具类

大家讲道理

大家讲道理

发布时间:2016-11-10 11:00:46

|

1505人浏览过

|

来源于php中文网

原创

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

自由画布
自由画布

百度文库和百度网盘联合开发的AI创作工具类智能体

下载
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;
  
/**
 * 包含获得各种集合对象的常用方法的泛型工具类。
 * 

* 如果要获得一个 {@code Map} 的对象,可以通过下面的方式实现: * {@literal Map map = GenericUtils.getMap();}。但是不能直接作为参数使用,例如有这样一个方法: * {@literal setInfo(Map)},不能直接这样调用: * setInfo(GenericUtils.getMap()) *

* * @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} 关于 {@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 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); } /** * 用该方法来代替 new HashSet(Collection c) 方式获得新的 * {@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 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(); } /** * 用该方法来代替 new TreeSet(Collection c) 方式获得新的 * {@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 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}。 *
    *
  • {@code setA == null && setB == null} --> 返回 {@link #getHashSet()}。
  • *
  • {@code setA != null && setB == null} --> 返回 {@code setA}。
  • *
  • {@code setA == null && setB != null} --> 返回 {@code setB}。
  • *
  • {@code setA != null && setB != null} --> 返回 {@code setA} 和 {@code setB} 的并集。 *
  • *
* * @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}。 *
    *
  • {@code setA == null && setB == null} --> 返回 {@code null}。
  • *
  • {@code setA != null && setB == null} --> 返回 {@code null}。
  • *
  • {@code setA == null && setB != null} --> 返回 {@code null}。
  • *
  • {@code setA != null && setB != null} --> 返回 {@code setA} 和 {@code setB} 的交集。 *
  • *
* * @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} 中的元素。
* 此方法不会修改 {@code setA},只是复制一份作相应操作,返回的是全新的 {@code Set} 对象。 *
    *
  • {@code setA == null} --> 返回 {@code null}。
  • *
  • {@code setB == null} --> 返回 {@code setA}。
  • *
  • {@code setA != null && setB != null} --> 返回 {@code setA} 和 {@code setB} * 的不对称差集。
  • *
* * @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)); } }

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
PHP 表单处理与文件上传安全实战
PHP 表单处理与文件上传安全实战

本专题聚焦 PHP 在表单处理与文件上传场景中的实战与安全问题,系统讲解表单数据获取与校验、XSS 与 CSRF 防护、文件类型与大小限制、上传目录安全配置、恶意文件识别以及常见安全漏洞的防范策略。通过贴近真实业务的案例,帮助学习者掌握 安全、规范地处理用户输入与文件上传的完整开发流程。

1

2026.01.13

PPT交互图表教程大全
PPT交互图表教程大全

本专题整合了PPT交互图表相关教程汇总,阅读专题下面的文章了解更多详细内容。

41

2026.01.12

Java 项目构建与依赖管理(Maven / Gradle)
Java 项目构建与依赖管理(Maven / Gradle)

本专题系统讲解 Java 项目构建与依赖管理的完整体系,重点覆盖 Maven 与 Gradle 的核心概念、项目生命周期、依赖冲突解决、多模块项目管理、构建加速与版本发布规范。通过真实项目结构示例,帮助学习者掌握 从零搭建、维护到发布 Java 工程的标准化流程,提升在实际团队开发中的工程能力与协作效率。

19

2026.01.12

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

134

2026.01.09

c++框架学习教程汇总
c++框架学习教程汇总

本专题整合了c++框架学习教程汇总,阅读专题下面的文章了解更多详细内容。

66

2026.01.09

学python好用的网站推荐
学python好用的网站推荐

本专题整合了python学习教程汇总,阅读专题下面的文章了解更多详细内容。

139

2026.01.09

学python网站汇总
学python网站汇总

本专题整合了学python网站汇总,阅读专题下面的文章了解更多详细内容。

13

2026.01.09

python学习网站
python学习网站

本专题整合了python学习相关推荐汇总,阅读专题下面的文章了解更多详细内容。

19

2026.01.09

俄罗斯手机浏览器地址汇总
俄罗斯手机浏览器地址汇总

汇总俄罗斯Yandex手机浏览器官方网址入口,涵盖国际版与俄语版,适配移动端访问,一键直达搜索、地图、新闻等核心服务。

105

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.6万人学习

Kotlin 教程
Kotlin 教程

共23课时 | 2.5万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号