见过大多数公司都有封装自己的工具类,很多已经有人实现了方法又重新实现一遍,不仅代码质量得不到保证,而且性能,并发都会有问题;反正我一般不用公司封装的工具类,像 apache.commons ,springutil 中都已经有很多现成的工具可以使用了,没必要重复造轮子;本文章主要是说一下有哪些比较常用的工具可以使用,不一定全面,大神勿踩。
本文引用的所有包如下
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.3</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.6.RELEASE</version> </dependency>
下面每个块的工具都是按我的使用频率排序的。
import org.apache.commons.lang3.StringUtils; boolean StringUtils.isBlank(str); // " " 为 true boolean StringUtils.isEmpty(str); // " " 为 false boolean StringUtils.isNotBlank(str); boolean StringUtils.isNotEmpty(str); String[] StringUtils.split(str,char/String,max);//切割字符串,使用给定字符 ; max 主要是用来处理空内容的 String StringUtils.capitalize(str); //首字母大写 String StringUtils.uncapitalize(str); //首字母小写 boolean StringUtils.isNumeric(str); boolean StringUtils.isNumericSpace(str); // "" 为true "12 3" 为 true String StringUtils.join(array/Iterable,chat/String); // 类似于 js 的 join ,使用给定字符拼接数组或集合中的元素 String StringUtils.leftPad(str,size,padChar); //给左边拼接固定长度的字符 String StringUtils.rightPad(str,size,padChar); //右边拼接固定长度的字符
import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DurationFormatUtils; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; DateFormatUtils.format(Date/Calendar/long,pattern); DateFormatUtils.ISO_DATE_FORMAT.format(Date/Calendar/long); // yyyy-MM-dd DateFormatUtils.ISO_TIME_NO_T_FORMAT.format(Date/Calendar/long);// HH:mm:ss DurationFormatUtils.formatDuration(long,format); //格式化毫秒值为指定格式 // 用于实体类 param,po,dto,vo @Override public String toString() { return ToStringBuilder.reflectionToString(this,ToStringStyle.SHORT_PREFIX_STYLE); }
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.collections.CollectionUtils; boolean ArrayUtils.isEmpty(Array); boolean ArrayUtils.isNotEmpty(Array); boolean CollectionUtils.isEmpty(Collection); boolean CollectionUtils.isNotEmpty(Collection); Collection CollectionUtils.union(a,b); //并集 Collection CollectionUtils.intersection(a,b); //交集 Collection CollectionUtils.disjunction(a,b); //补集 Collection CollectionUtils.subtract(a,b); //差集
import org.apache.commons.lang3.time.DateUtils; Date DateUtils.parseDate(str,parsePatterns); boolean DateUtils.isSameDay(Date,Date); //判断两个日期是否是同一天 Date DateUtils.truncate(Date,field); //日期截取,只取指定日期字段的值 Date DateUtils.round(Date,field); // 日期四舍五入,和 truncate 的区别是 如果用 YEAR 当前时间是 2019-08-18 truncate 的值还是 2019 ,但 round 会得到 2020 Date DateUtils.addDays(Date,amount); //增加一天,这个不会修改原来的日期值 还有 addYears,addMonths,addWeeks,addHours,addMinutes,addSeconds,addMilliseconds Date DateUtils.setDays(Date,amount); //设置为本月的第几天 还有 setYears,setMonths,setHours,setMinutes,setSeconds,setMilliseconds /* 计算已过去的天数,从哪儿开始算呢,根据第2个参数fragment来确定, 如现在是2014-10-23 13:27:00,那么 DateUtils.getFragmentInDays(new Date(), Calendar.MONTH)返回23,表示从当月起已经过去23天了, DateUtils.getFragmentInDays(new Date(), Calendar.YEAR)返回296,表示从当年起已经过去296天了, DateUtils.getFragmentInHours(new Date(), Calendar.DATE)返回13,表示从今天起已经过去13个小时了 */ long DateUtils.getFragmentInDays(Date,fragment); //计算已经过去的天数
import org.apache.commons.lang3.math.NumberUtils; int NumberUtils.toInt(String); 还有 toLong,toDouble,toFloat,toShort 等 boolean NumberUtils.isDigits(String); //判断是否全由数字组成 "" 为 false boolean NumberUtils.isNumber(String); // 支持 0x 类的表达形式
import org.apache.commons.lang3.ClassUtils; import org.apache.commons.lang3.reflect.MethodUtils; import org.springframework.cglib.core.ReflectUtils; import org.springframework.util.ReflectionUtils; Class<?> ClassUtils.getClass(className); boolean ClassUtils.isInnerClass(Class<?>); //是否是内部类 boolean ClassUtils.isPrimitiveOrWrapper(Class<?>); //判断是否是原始类型或原始类型的包装类 List<Method> MethodUtils.getMethodsListWithAnnotation( Class<?>, Class<? extends Annotation>); Method ReflectionUtils.findMethod(Class<?> clazz,methodName, Class<?>...); PropertyDescriptor[] ReflectUtils.getBeanGetters(Class type); Object MethodUtils.invokeMethod(object,methodName,args[],values[]); //调用方法
import org.apache.commons.io.IOUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; String IOUtils.toString(InputStream,encoding); //文本文件流读出字符串 List<String> IOUtils.readLines(InputStream,encoding); //文本文件读出 List<String> int IOUtils.copy(InputStream, OutputStream); void FileUtils.writeStringToFile(File, String, Charset); void FileUtils.deleteDirectory(File); String FilenameUtils.getBaseName(filename); //获取文件名 String FilenameUtils.getExtension(filename); //获取扩展名 String FilenameUtils.separatorsToUnix(String path); //转成 linux 路径分隔符
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Hex; import org.apache.commons.codec.digest.DigestUtils; byte[] Base64.encodeBase64(byte []); byte[] Base64.decodeBase64(byte[]); char [] Hex.encodeHex(byte []); byte [] Hex.decodeHex(char []); String DigestUtils.md5Hex(String); String DigestUtils.shaHex(String);
import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.RandomStringUtils; int RandomUtils.nextInt(start,end); long RandomUtils.nextLong(start,end); String RandomStringUtils.randomNumeric(count); String RandomStringUtils.randomAlphabetic(count);
// 秒表 import org.apache.commons.lang3.time.StopWatch; StopWatch stopWatch = new StopWatch(); stopWatch.start(); stopWatch.getTime(); stopWatch.stop(); //spring 获取方法参数名称 import org.springframework.core.ParameterNameDiscoverer; ParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer(); String[] parameterNames = parameterNameDiscoverer.getParameterNames(method); //spring 用于处理逗号分隔符的字符串列表方法 import org.springframework.util.StringUtils; String [] StringUtils.tokenizeToStringArray(String str, String delimiters);
https://blog.csdn.net/sanri1993/article/details/98664034