- 浏览: 399155 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (99)
- Spring (14)
- Hibernate (2)
- Struts (0)
- Java (21)
- J2ee (1)
- JFreeChart (1)
- Tomcat (3)
- Eclipse (3)
- 项目日记 (2)
- Javascript (4)
- fckeditor (2)
- mysql (13)
- Powerdesigner (2)
- sql server 2005 (1)
- Css (1)
- jQuery (2)
- 架构 (4)
- 性能 (7)
- struts2 (1)
- LigerUI (1)
- ibatis (2)
- 数据库 (1)
- 职业发展 (3)
- maven (1)
- mybatis (1)
- 算法 (1)
- 项目经理 (2)
- hadoop-1.0 (2)
- hadoop1.0 (1)
- hadoop-2.0 (1)
- 网络安全 (5)
- 正则表达式 (1)
- 管理 (2)
- Redis (1)
- linux (4)
- infobright (1)
- CentOS (4)
- windows (1)
- 其他 (1)
- easyui (1)
- elasticsearch (0)
- 公司管理 (0)
最新评论
-
wangyudong:
由Spring Boot实现的微服务需要有比较好的工具去测试R ...
使用Spring Boot快速构建应用 -
masuweng:
<artifactId>maven-compile ...
使用Spring Boot快速构建应用 -
masuweng:
说明下<start-class>com.test. ...
使用Spring Boot快速构建应用 -
masuweng:
学习了,感谢了
使用Spring Boot快速构建应用 -
幽蓝星空:
执行mvn clean install spring-boot ...
使用myeclipse打包Spring Boot工程
package my.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); } /** * 用该方法来代替 {@code new ArrayList<T>()} 方式获得新的 {@code java.util.List} 的实例对象。 * * @param <T> {@code List<T>} 中保存的对象。 * @return 返回 {@code java.util.List<T>} 关于 {@code java.util.ArrayList<T>} 实现的新实例。 */ public static <T> List<T> getList() { return new ArrayList<T>(); } /** * 用该方法来代替 {@code new ArrayList<T>(int)} 方式获得新的 {@code java.util.List} 的实例对象。 * * @param <T> {@code List<T>} 中保存的对象。 * @param initialCapacity 列表的初始容量。 * @return 返回 {@code java.util.List<T>} 关于 {@code java.util.ArrayList<T>} 实现的新实例。 */ public static <T> List<T> getList(int initialCapacity) { return new ArrayList<T>(initialCapacity); } /** * 用该方法来代替 {@code new ArrayList<T>()} 方式获得新的 {@code java.util.List} 的实例对象。 * * @param <T> {@code List<T>} 中保存的对象。 * @param c 其中的元素将存放在新的 {@code list} 中的 {@code collection}。 * @return 返回 {@code java.util.List<T>} 关于 {@code java.util.ArrayList<T>} 实现的新实例。 */ public static <T> List<T> getList(Collection<? extends T> c) { if (ObjectUtils.isNotEmpty(c)) return new ArrayList<T>(c); return new ArrayList<T>(); } /** * 用该方法来代替 {@code new LinkedList<T>()} 方式获得新的 {@code java.util.List} 的实例对象。 * * @param <T> {@code List<T>} 中保存的对象。 * @return 返回 {@code java.util.List<T>} 关于 {@code java.util.LinkedList<T>} 实现的新实例。 */ public static <T> List<T> getLinkedList() { return new LinkedList<T>(); } /** * 用该方法来代替 {@code new HashSet<T>()} 方式获得新的 {@code java.util.Set} 的实例对象。 * * @param <T> {@code Set<T>} 中保存的对象。 * @return 返回 {@code java.util.Set<T>} 关于 {@code java.util.HashSet<T>} 实现的新实例。 */ public static <T> Set<T> getHashSet() { return new HashSet<T>(); } /** * 用该方法来代替 {@code new HashSet<T>(int)} 方式获得新的 {@code java.util.Set} 的实例对象。 * * @param <T> {@code Set<T>} 中保存的对象。 * @param initialCapacity 列表的初始容量。 * @return 返回 {@code java.util.Set<T>} 关于 {@code 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> 方式获得新的 * {@code java.util.Set} 的实例对象。 * * @param <T> {@code Set} 中保存的对象。 * @param c 其中的元素将存放在新的 {@code set} 中的 {@code collection}。 * @return 返回 {@code java.util.Set<T>} 关于 {@code 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>(c); } /** * 用该方法来代替 {@code new TreeSet<T>()} 方式获得新的 {@code java.util.Set} 的实例对象。 * * @param <T> {@code Set<T>} 中保存的对象。 * @return 返回 {@code java.util.Set<T>} 关于 {@code 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>(c); } /** * 用该方法来代替 {@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)); } }
发表评论
-
Apache HttpClient Examples
2015-05-06 15:25 1929String url = "http://www ... -
java使用IO流进行文件的合并
2014-12-16 11:44 2119package chapter8.file; imp ... -
为什么谷歌要执行严格的代码编写规范
2014-09-02 13:51 884本篇是谷歌是如何做代码审查的的续篇。 我们在谷歌所做事情中 ... -
垃圾回收调优及JVM参数详解
2014-07-18 17:52 1672一、常用JVM配置参数 1.1基本参数 -client ... -
为何要在Java中使用内存映射文件(Memory Mapped File)或者MappedByteBuffer
2014-06-06 00:21 3108尽管从JDK 1.4版本开始,Java内存映射文件(Memo ... -
Java 中使用内存映射文件需要考虑的 10 个问题
2014-06-06 00:18 586java中的内存映射IO ... -
Annotation的优缺点-和配置文件比较
2014-05-06 18:22 1264a. 配置(配置文件,con ... -
shell/cmd 获取System.exit(); 返回值
2014-04-29 11:28 3746windows cmd: java ... -
java代码片段
2013-12-20 10:59 786使用NIO进行快速的文件拷贝 public ... -
Java IO流分析整理
2013-12-20 10:19 878ava中的流,可以从不同的角度进行分类。 按照数据流的方向 ... -
Java-UrlRewrite中文官方文档
2013-07-14 18:40 1851安装 1. 下载jar包, 并加入到WEB-INF/ ... -
java的8种排序
2013-03-18 09:58 10968种排序之间的关系: ... -
使用FileReader和FileWriter读取写入文件内容
2012-04-09 11:49 2324java 中的字节流不能直接操作Unicode字符,要想直接操 ... -
System.out.println与System.err.println的区别
2012-04-06 19:49 2621我在学习osworkflow时,同时使用了System.out ... -
Java获取IP地址:request.getRemoteAddr()警惕
2009-11-05 17:03 6527项目中需要和第三方平台接口,加了来源IP鉴权功能,测试时发现没 ... -
Integer比较
2009-05-18 16:08 3023例如:两个对象里面都有一个方法为getInteger()的方法 ... -
Java和PHP在Web开发方面的比较
2009-05-01 12:39 2691比较PHP和JSP这两个Web开发技术,在目前的情况是其实是比 ... -
创建J2EE 5.0工程后,JSTL不能使用解决方法
2009-01-06 17:21 5620原因:MyEclipse 创建 j2ee5.0工程的时候把JS ... -
新版JUnit 4.0 抢先体验
2008-04-03 13:51 1246新版JUnit 4.0 抢先体验 ... -
VO与PO之间的转换代码
2008-03-28 17:53 2451import java.beans.Property ...
相关推荐
泛型集合12.3.4 泛型集合泛型的场景:定义泛型:12.3.5 Colletions工具类 12.3.4 泛型集合 概念:参数化类型、类型安全的集合,强制集合元素的类型必须一致; 特点: 编译时即可检查,而非运行时抛出异常; 访问时,...
网上有好多实体转另一个实体的方法,但是几乎没有实体集合直接转另一个实体集合的工具类,自己写了一个,供大家使用。其实原理很简单,就是泛型。
在Java开发类库中,提供了很多工具类,我们即将学习最常见的工具类,比如对日期的操作,对集合的操作等。具体更多的工具类,请参考JavaDoc文档。 2. java.util.Date类 Date类包装了毫秒值,毫秒值表示自1970年1月1...
自己收集的java编程笔记,关于集合类的知识,很有用
实现list不同泛型之间实体的互转,基于java8新特性+反射机制实现list不同实体类互转,将jdk8的流处理集合互转抽出来成一个工具类,实现lsit
学过之后对AWT事件模型、菜单项、图形绘制、集合与泛型会有更深的认识
HelloNativeTest.java 测试本地化是否成功的类文件 instanceVar.java 定义一个实例成员变量 invokeByObject.java 对象实参传递示例程序 invokeByValue.java 传值调用示例程序 invokeMethod.java 同一个类中调用...
1: Java基础语法 ...在本步骤中,将会介绍最常用的Java工具类,包括异常、包装器类、字符串处理类、集合框架及其实现类、泛型、多线程和输入输出流等内容。学习了这些,定让你的Java技能更上一层楼。
Java面试通常涵盖多个...并发编程:了解Java中的线程、同步、锁等机制,以及Java并发包中的工具类。 JVM与性能调优:对Java虚拟机(JVM)有一定了解,包括内存管理、垃圾回收等方面,并知道如何进行基本的性能调优。
Java的集合类是一种特别有用的工具类,它可以用于存储数量不等的多个对象,并可以实现常用数据结构,如栈,队列等,除此之外,Java集合还可用于保存具有映射关系的关联数组。 Java的集合大致上可分为:Set,List和...
Collections--集合工具类 83 Arrays—数组对象工具类 84 增强for循环 85 可变参数(...) 86 枚举:关键字 enum 86 自动拆装箱 86 泛型 87 <java.lang>System 89 <java.lang>Runtime 90 <java.lang>Math 90 <java....
6. 集合工具类Collections、Map集合、集合嵌套、不可变集合 7. Stream流、异常处理 8. Logback日志框架、阶段项目 9. File、方法递归、字符集、IO流(一) 10. IO流(二) 11. 多线程 12. 网络编程 13. 单元测试、...
常用工具类 异常处理 Java的异常 捕获异常 抛出异常 自定义异常 使用断言 使用JDK Logging 使用Commons Logging 使用Log4j 使用SLF4J和Logback 反射 Class类 访问字段 调用方法 调用构造方法 获取...
《疯狂Java讲义(附光盘第2版)》深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、Java注释、Java的IO...
Java经典编程300例》内容包括java语言概述、eclipse开发工具、java语言基础、流程控制、数组及其常用操作、面向对象入门、面向对象进阶、字符串与包装类、java集合类框架、常用数学工具类、错误处理、输入/输出、...
使用 Core Java JDK1.8,将Map对象转换成Java实体对象的工具类完整代码。仅供交流学习。
Java经典编程300例》内容包括java语言概述、eclipse开发工具、java语言基础、流程控制、数组及其常用操作、面向对象入门、面向对象进阶、字符串与包装类、java集合类框架、常用数学工具类、错误处理、输入/输出、...
全书共14章,包括Java基本的程序结构、对象与类、继承、接口与内部类、图形程序设计、事件处理、Swing用户界面组件、部署应用程序和Applet、异常日志断言和调试、泛型程序设计、集合以及多线程等内容。. 全书对Java...
7.8 操作集合的工具类:Collections 283 7.8.1 排序操作 283 7.8.2 查找,替换操作 287 7.8.3 同步控制 288 7.8.4 设置不可变集合 288 7.9 烦琐的接口:Enumeration 289 7.10 本章小结 290 本章练习 290 第8...