java中节省90时间的常有的工具类
下面一起来看看可以节省90的加班时间的第三方开源库吧。第一个介绍的必须是Apache下的Commons库,第二个是google开源的Guava库,第三个是Hutool工具类库。ApacheCommons
ApacheCommons是一个功能非常强大、经常被使用到的库。它有40个左右的类库,包含了对字符串、日期、数组等的操作。Lang3
Lang3是一个处理Java中基本对象的包,比如用StringUtils类操作字符串、ArrayUtils类操作数组、DateUtils类可以处理日期、MutablePair类可以返回多个字段等等。字符串操作
对字符串快速操作,在ifelse的少写判空条件。123456789StringUtils。isBlank();是不是空字符串StringUtils。isAnyBlank(a,,c);其中一个是不是空字符串StringUtils。isNumeric(1);字符串是不是全是数字组成,。不算数字StringUtils。remove(sgsgsdfasd,a)移除字符串日期操作
终于可以不用SimpleDateFormat格式化日期了,DateUtils。iterator可以获取一段时间。1234567891011121314151617181920DatedateDateUtils。parseDate(20210701,yyyyMMdd);DateUtils。addDays(date,1);加一天DateUtils。isSameDay(date,newDate());比较获取一段日期RANGEWEEKSUNDAY从周日开始获取一周日期RANGEWEEKMONDAY从周一开始获取一周日期RANGEWEEKRELATIVE从当前时间开始获取一周日期RANGEWEEKCENTER以当前日期为中心获取一周日期RANGEMONTHSUNDAY从周日开始获取一个月日期RANGEMONTHMONDAY从周一开始获取一个月日期IteratorCalendariteratorDateUtils。iterator(date,DateUtils。RANGEWEEKCENTER);while(iterator。hasNext()){Calendarnextiterator。next();System。out。println(DateFormatUtils。format(next,yyyyMMdd));}返回多个字段
有时候在一个方法中需要返回多个值的时候,经常会使用HashMap返回或者是JSON返回。Lang3下已经帮我们提供了这样的工具类,不需要再多写HashMap和JSON了。12345MutablePairInteger,StringmutablePairMutablePair。of(2,这是两个值);System。out。println(mutablePair。getLeft()mutablePair。getRight());MutableTripleInteger,String,DatemutableTripleMutableTriple。of(2,这是三个值,newDate());System。out。println(mutableTriple。getLeft()mutableTriple。getMiddle()mutableTriple。getRight());ArrayUtils数组操作
ArrayUtils是专门处理数组的类,可以让方便的处理数组而不是需要各种循环操作。123456789101112131415161718192021222324合并数组String〔〕array1newString〔〕{value1,value2};String〔〕array2newString〔〕{value3,value4};String〔〕array3ArrayUtils。addAll(array1,array2);clone数组String〔〕array4ArrayUtils。clone(array3);数组是否相同EqualsBuilder。reflectionEquals(array3,array4);toStringArrayUtils。toString(array4)反转数组ArrayUtils。reverse(array4);二维数组转mapMapString,StringarrayMap(HashMap)ArrayUtils。toMap(newString〔〕〔〕{{key1,value1},{key2,value2}});for(Strings:arrayMap。keySet()){System。out。println(arrayMap。get(s));}collections4集合操作
commonscollections4增强了Java集合框架,提供了一系列简单的API方便操作集合。
maven依赖12345dependencygroupIdorg。apache。commonsgroupIdcommonscollections4artifactIdversion4。4versiondependencyCollectionUtils工具类
这是一个工具类,可以检查null元素不被加入集合,合并列表,过滤列表,两个列表的并集、差集、合集。有部分功能在Java8中可以被StreamAPI替换。1234567891011121314151617181920212223242526272829303132null元素不能加进去ListStringarrayList1newArrayListString();arrayList1。add(a);CollectionUtils。addIgnoreNull(arrayList1,null);System。out。println(arrayList1。size());排好序的集合,合并后还是排序的ListStringarrayList2newArrayListString();ListStringarrayList3newArrayListString();ListStringarrayList4CollectionUtils。collate(arrayList2,arrayList3);System。out。println(arrayList4);过滤,只保留bCollectionUtils。filter(arrayList4,newPredicateString(){publicbooleanevaluate(Strings){if(s。equals(b)){returntrue;}returnfalse;}});交集CollectionUtils。retainAll(arrayList4,arrayList3);并集CollectionUtils。union(arrayList4,arrayList3差集CollectionUtils。subtract(arrayList4,arrayList3)Bag统计次数
用于统计值在集合中出现的次数。123456BagbagnewHashBagString();bag。add(a);bag。add(b);bag。add(a);bag。add(c,3);System。out。println(bag。getCount(a));beanutilsBean操作
beanutils是通过反射机制对JavaBean进行操作的。比如对Bean进行复制、map转对象、对象转Map。
maven依赖12345dependencygroupIdcommonsbeanutilsgroupIdcommonsbeanutilsartifactIdversion1。9。4versiondependency123456789101112131415161718192021BeanpublicclassUser{privateStringname;省略getset}copyBeanUseruser1newUser();user1。setName(李四);Useruser2(User)BeanUtils。cloneBean(user1);System。out。println(user2。getName());Bean转mapBeanUtils。describe(user1);Map转BeanMapString,StringbeanMapnewHashMap();beanMap。put(name,张三);Useruser3newUser();BeanUtils。populate(user3,beanMap);System。out。println(user3。getName());Guava
Google开源的一个基于Java扩展项目,包含了一些基本工具、集合扩展、缓存、并发工具包、字符串处理等。
maven依赖12345dependencygroupIdcom。google。guavagroupIdguavaartifactIdversion30。1。1jreversiondependencyMapString,List类型
在java代码中经常会遇到需要写MapString,Listmap的局部变量的时候。有时候业务情况还会更复杂一点。12345678910111213以前MapString,ListStringmapnewHashMapString,ListString();ListStringlistnewArrayListString();list。add(张三);list。add(李四);map。put(名称,list);System。out。println(map。get(名称));现在MultimapString,StringmultimapArrayListMultimap。create();multimap。put(名称,张三);multimap。put(名称,李四);System。out。println(multimap。get(名称));value不能重复的Map
在Map中value的值时可以重复的,Guava可以创建一个value不可重复的Map,并且Map和value可以对调。123456789会报异常BiMapString,StringbiMapHashBiMap。create();biMap。put(key1,value);biMap。put(key2,value);System。out。println(biMap。get(key1));keyvalue对调biMapbiMap。inverse();System。out。println(biMap。get(value));缓存
写业务的时候肯定会使用缓存,当不想用第三方作为缓存的时候,Map又不够强大,就可以使用Guava的缓存。
使用CacheBuilder。newBuilder()。build()构建缓存,maximumSize()方法可以设置缓存的存储数量12345CacheString,StringcacheCacheBuilder。newBuilder()。maximumSize(2)。build();cache。put(key1,value1);cache。put(key2,value2);cache。put(key3,value3);System。out。println(cache。getIfPresent(key1));key1null过期时间
expireAfterAccess()可以设置缓存的过期时间。1234CacheString,StringcacheCacheBuilder。newBuilder()。maximumSize(2)。expireAfterAccess(1,TimeUnit。SECONDS)。build();cache。put(key1,value1);Thread。sleep(1000);System。out。println(cache。getIfPresent(key1));加载数据
当需要访问key1时,如果key1此时没有被缓存,就会从回调函数中加载key1的值。值得一提的时当多个线程同时访问的时候只有一个线程会执行回调函数。123456cache。get(key1,newCallableString(){publicStringcall()throwsException{returnvalue1;}});System。out。println(cache。getIfPresent(key1));
Guava有许许多多的工具类,这里只列出了小小的部分,可以在官网例子中查看到各种用法。Hutool
一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件:hutoolaopJDK动态代理封装,提供非IOC下的切面支持hutoolbloomFilter布隆过滤,提供一些Hash算法的布隆过滤hutoolcache缓存hutoolcore核心,包括Bean操作、日期、各种Util等hutoolcron定时任务模块,提供类Crontab表达式的定时任务hutoolcrypto加密解密模块hutooldbJDBC封装后的数据操作,基于ActiveRecord思想hutooldfa基于DFA模型的多关键字查找hutoolextra扩展模块,对第三方封装(模板引擎、邮件等)hutoolhttp基于HttpUrlConnection的Http客户端封装hutoollog自动识别日志实现的日志门面hutoolscript脚本执行封装,例如Javascripthutoolsetting功能更强大的Setting配置文件和Properties封装hutoolsystem系统参数调用封装(JVM信息等)hutooljsonJSON实现hutoolcaptcha图片验证码实现SecureUtil(加密解密工具)
主要是在登录的时候还有修改密码的时候用到的,因为数据库里面的密码是md5加密处理的,所以登录的时候需要先加密之后再到数据库进行查询,使用Hutool的话,只需要调用SecureUtil中的md5方法就可以了。useruserService。userLoginByName(loginName,SecureUtil。md5(loginPwd));HtmlUtil(HTML工具类)
这个工具类就比较厉害了,不过我在Halo当中用得最多的还是HtmlUtil。encode,可以将一些字符转化为安全字符,防止xss注入和SQL注入,比如下面的评论提交。comment。setCommentAuthor(HtmlUtil。encode(comment。getCommentAuthor()));
这就是防止有小坏蛋故意写一些可执行的js代码,然后提交评论,在后台面板就会执行这一段代码,比较危险,使用encode方法就可以将
就可以将
小学生运动会作文有趣的运动会今天我们开运动会了,我们拿了很多奖牌。但是很遗憾的是,乒乓球比赛和接力赛,我们都输了。你知道我们是怎么输的吗?让我来告诉你们吧!乒乓球比赛,一开始我们还蛮顺利的。可……
可爱的小狗作文400字左右我喜欢很多小动物,比如小猫咪,小猴,小鸟。但我还是最喜欢小狗。下面是小编帮大家整理的可爱的小狗作文400字左右,希望大家喜欢。我家养了一只小狗,它生气勃勃,可爱极了!……
让我难忘的凡人善举作文最近,我在电视里看到一个很普通的事,却让我很受感动,难以忘记。事情是这样的:张大妈有50多岁,每天早上在一个早餐点卖豆腐脑,非常辛苦,尤其是在冬天,很多人还在热被窝里睡大……
美丽的生活高三作文人生不知道会有多少次邂逅,会有多少次别离,会有多少的悲欢离合。因此,不管是否在路上,带上自己的阳光。心若向阳,生活即美丽。一生中,如果悲苦占据了生命的大部分,是因为缺乏阳光,找……
人生的选择作文(三篇)篇一:人生的选择人生就是如此,每一个踏上人生遥途的人,脚下都有一条宽阔的大路。每一条宽阔的大路都拥有无数条狭窄的小路,每一条小路都会延伸到不同景色的地方,每一种景色似乎都……
快乐的真正含义读寻找快活林有感我读过一篇童话名字叫《寻找快活林》里面引人深思的道理把我深深地震憾了。在这篇童话中,狐狸改变了以往狡猾的形象,在这里,狐狸开始信任别人,开始向善,而且,它们还尝到了信任和向善的……
六月征文你好,再见生命中的点滴像一团团光影在波动幕布上留下斑驳色,如同被风打乱了的皱纹,留下的,存在记忆里不会忘却的,只剩下无声的、风留下记号的暗影。来去匆匆,多少人像旅途中的一阵风,在我……
中学生作文团结力量大今天下午第三节课下课了,我们声乐小组的同学拿起笔纸,急匆匆到跑下楼。刚跑到楼梯角,就看到操场与台阶的缝里黑压压的一片。我好奇地跑过去,吃了一惊,只见角落里源源不断地跑出一……
捅了马蜂窝作文记得有一年春晚的某个小品,有这样一句让人让人印象深刻的台词:你摊上事儿了,你摊上大事儿了,当时就觉得很好笑,到后来,我们开始用来嘲讽其他人,可是没想到,有一天,竟然因为调皮,真……
70句赞美老师的优美句子师恩难忘,将宝贵的人生经验馈赠;师情冗长,为我们指引幸福的前程;师爱无疆,震撼着心灵最柔软的地方。小编收集了70句赞美老师的优美句子,欢迎阅读,1。人生旅程上您为我点燃希……
我的好奶奶作文700字奶奶生活的年代比较艰苦,勤俭朴素的风格在那辈老人身上活灵活现,下面,yuwenmi小编为大家分享我的好奶奶作文700字,欢迎阅读!我的好奶奶作文700字1我的奶奶是……
花生大战作文400字ldquo;加油,加油hellip;hellip;rdquo;是什么声音?原来是快乐魔方比赛剥花生的声音,接下来我就给大家介绍一下吧。比赛分成两轮,第一轮是集体赛,第二轮……
我理想的家园作文家园是我们温暖的港湾,对于家园你有什么样的感想呢?以下是小编整理的我理想的家园作文,欢迎阅读参考!我理想的家园作文一今天,天气晴朗、骄阳似火,我们带着火一般的热情参观了西……
游哀牢山初一作文每天吃吃睡睡,做做作业,玩下电脑,一个寒假总不能就这样过了吧。嘿嘿,那是一定的,我的寒假已经快结束了,最令我难忘的就是哀牢山之旅了。哀牢山的路,很险。我们坐在由新手……
万象城一日游作文在生活、工作和学习中,大家或多或少都会接触过作文吧,作文是通过文字来表达一个主题意义的记叙方法。你知道作文怎样才能写的好吗?以下是小编精心整理的万象城一日游作文,仅供参考,欢迎……
可爱的小鸟小学作文范文星期天上午,妈妈从外面带来了一只可爱的小鸟,我给它取了一个好听的名字叫小羽。它有一身雪白的羽毛,所以我叫它小羽。还有一对水灵灵、圆溜溜的小眼睛,珍珠般大小,尖尖的小嘴,黄……
别样的课堂作文三篇篇一:别样的课堂今天是开始的第一天,昨天晚上我辗转反侧,激动得一夜未眠。清晨的第一阳光照进了我的房间,我立刻爬了起来,又是一个崭新的一天,怀着好心情,我在八点半跨出了家门……
世界报哈萨克斯坦在暴乱中遭遇断网行动有线和无线网络均受影响中国小康网1月7日讯老马在燃料价格上涨导致数人死亡和数百人受伤之后,哈萨克斯坦正处于暴力示威的阵痛中。哈萨克斯坦在暴乱中遭遇断网行动,有线和无线网络均受影响法国世界报报道……
电影一生一世观后感我承认,我不深刻,看《一生一世》源于它唯美的名字。至于是不是大导演主导、大明星主演,剧情是否跌宕起伏,结局是虐心还是圆满,这些统统于我毫无意义。单就这个寄予无限美好……
模块化智能蛇形机器人摘要:随着科技与经济的发展,人们探索新世界的动力越来越强,但由于地势的复杂性为探索带来了不便,设计具有在复杂地形移动能力的智能蛇形机器人具有重要的应用意义。智能蛇形机器人以其多……
雨露阳光溪水提醒九年级作文假如我是一株麦苗,妈妈的提醒就像那雨露;假如我是一株小树,妈妈的提醒就像阳光;假如我是一条小鱼,妈妈的提醒就像那溪水麦苗提醒瞧,七岁的我正飞奔向妈妈,但由于不小心踩……
6Nie当今信息技术飞速发展,以多媒体演示、教师讲授为主的小学数学多媒体教学,已经开始转变为以开放的交互工具探究、促进学生思维发展为主的个性化教学。近年来,支持自主创作组合……
铁链的创伤(中)八hr五月二十一日,同学们如约聚会。聚会上,黄言喝了几口饮料,突然提出要抱抱杨慧。杨慧阴沉了脸,正想斥责一顿黄言,站在一旁的苏浚文却突然发话了:让他抱。苏浚文的语气……
六年级暑假日记愉快的一天xx年08月07日星期日天气:晴今天我乘t1次列车七点多钟来到爷爷家。姐姐很迟才来,因为她和姑姑伯伯买东西去了。我们有一年没有见面了。姐妹相见,特别高兴。下午我和姐……