安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

超级实用的Java工具类

5月5日 渡缘祠投稿
  大家好,我是大彬
  在平时开发过程中,经常会重复造轮子,在同一个项目里面,可能会出现各种各样每个人自己实现的工具类,这样不仅降低了开发效率,而且代码也不好维护。
  今天趁着国庆假期,整理了一些常用的工具类,在这里给大家分享一下,希望对大家有所帮助字符串工具类
  首先介绍一下commonslang3的一个字符串工具类StringUtils,常用方法如下:
  1、isEmpty()判断字符串是否为空。publicclassStringUtilsTest{publicstaticvoidmain(String〔〕args){Stringname大彬;System。out。println(StringUtils。isEmpty(name));}}
  2、isBlank()判断字符串是否为空,如果字符串都是空格,也认为是空。publicclassStringUtilsTest{publicstaticvoidmain(String〔〕args){System。out。println(StringUtils。isBlank());}true}
  3、strip()将字符串左右两边的空格删除。publicclassStringUtilsTest{publicstaticvoidmain(String〔〕args){Stringname大彬;System。out。println(StringUtils。strip(name));}}
  4、join(Object〔〕array,Stringseparator)将数组拼接成字符串,可以设置分隔符。publicclassStringUtilsTest{publicstaticvoidmain(String〔〕args){String〔〕nameArr{大彬1,大彬2,大彬3};System。out。println(StringUtils。join(nameArr,,));}output大彬1,大彬2,大彬3}
  5、replace(Stringtext,StringsearchString,Stringreplacement)替换字符串关键字。publicclassStringUtilsTest{publicstaticvoidmain(String〔〕args){System。out。println(StringUtils。replace(hello,大彬,hello,hi));}outputhi,大彬}日期工具类
  SimpleDateFormat不是线程安全的,在多线程环境会有并发安全问题,不推荐使用。这里大彬推荐另一个时间工具类DateFormatUtils,用于解决日期类型和字符串的转化问题,DateFormatUtils不会有线程安全问题。
  Date转化为字符串:publicclassDateFormatUtilsTest{publicstaticvoidmain(String〔〕args)throwsParseException{StringdateStrDateFormatUtils。format(newDate(),yyyyMMdd);System。out。println(dateStr);}output20211001}
  字符串转Date,可以使用commonslang3下时间工具类DateUtils。publicclassDateUtilsTest{publicstaticvoidmain(String〔〕args)throwsParseException{StringdateStr2021100115:00:00;DatedateDateUtils。parseDate(dateStr,yyyyMMddHH:mm:ss);System。out。println(date);}outputFriOct0115:00:00CST2021}
  Java8之后,将日期和时间分为LocateDate、LocalTime和LocalDateTime,相比Date类,这些类都是final类型的,不能修改,也是线程安全的。
  使用LocateDateTime获取年月日:publicclassLocalDateTimeTest{publicstaticvoidmain(String〔〕args){LocalDateTimenowLocalDateTime。now();System。out。println(now。getYear());System。out。println(now。getMonthValue());System。out。println(now。getDayOfMonth());}output2021101}
  使用LocalDateTime进行字符串和日期的转化:publicclassLocalDateTimeTest1{publicstaticvoidmain(String〔〕args){StringdatePatternyyyyMMddHH:mm:将字符串转化为日期LocalDateTimedateTimeLocalDateTime。parse(2021100116:00:00,DateTimeFormatter。ofPattern(datePattern));System。out。println(dateTime);将LocalDateTime格式化为字符串StringdateStrDateTimeFormatter。ofPattern(datePattern)。format(dateTime);System。out。println(dateStr);}output20211001T16:002021100116:00:00}集合工具类
  在开发接口功能的时候,经常需要对入参做判空处理:if(nulllistlist。isEmpty()){}
  虽然代码很简单,但是也比较容易写出抛空指针异常的代码。推荐使用commonscollections提供的工具类,使用简单,并且不会出错。publicclassCollectionUtilsTest{publicstaticvoidmain(String〔〕args){ListStringnameListnewArrayList();if(CollectionUtils。isEmpty(nameList)){System。out。println(namelistisempty);}}}
  Map集合判空使用commonscollections下的MapUtils工具类。数组判空需要使用commonslang下的ArrayUtils。map判空if(MapUtils。isEmpty(map)){}数组判空if(ArrayUtils。isEmpty(array)){}
  此外,还可以使用CollectionUtils对基础数据类型和String类型的集合进行取交集、并集和差集的处理。publicclassCollectionUtilsTest1{publicstaticvoidmain(String〔〕args){String〔〕array1newString〔〕{1,2,3,4};String〔〕array2newString〔〕{4,5,6,7};ListStringlist1Arrays。asList(array1);ListStringlist2Arrays。asList(array2);并集unionSystem。out。println(CollectionUtils。union(list1,list2));output:〔1,2,3,4,5,6,7〕交集intersectionSystem。out。println(CollectionUtils。intersection(list1,list2));output:〔4〕}}数组工具类
  ArrayUtils是专门处理数组的类,方便进行数组操作,不再需要各种循环操作。
  数组合并操作:publicclassArrayUtilsTest{publicstaticvoidmain(String〔〕args){合并数组String〔〕arr1newString〔〕{大彬1,大彬2};String〔〕arr2newString〔〕{大彬3,大彬4};String〔〕arr3ArrayUtils。addAll(arr1,arr2);System。out。println(ArrayUtils。toString(arr3));}output{大彬1,大彬2,大彬3,大彬4}}
  数组clone操作:publicclassArrayUtilsTest1{publicstaticvoidmain(String〔〕args){合并数组String〔〕arr1newString〔〕{大彬1,大彬2};String〔〕arr2ArrayUtils。clone(arr1);arr1〔1〕大彬;System。out。println(arr1:ArrayUtils。toString(arr1));System。out。println(arr2:ArrayUtils。toString(arr2));}outputarr1:{大彬1,大彬}arr2:{大彬1,大彬2}}
  将数组原地翻转:author:程序员大彬time:2021100119:29publicclassArrayUtilsTest2{publicstaticvoidmain(String〔〕args){将arr1翻转String〔〕arr1newString〔〕{大彬1,大彬2};ArrayUtils。reverse(arr1);System。out。println(ArrayUtils。toString(arr1));}output{大彬2,大彬1}}Json工具类
  Jackson是当前用的比较广泛的,用来序列化和反序列化json的开源框架。Jackson优点如下:Jackson所依赖的jar包较少,简单易用;与其他json的框架如Gson相比,Jackson解析大的json文件速度比较快;Jackson运行时占用内存比较低,性能比较好;Jackson比较灵活,容易进行扩展和定制。
  Jackson的核心模块由三部分组成。jacksoncore,核心包,提供基于流模式解析的相关API;jacksonannotations,注解包,提供标准注解功能;jacksondatabind,数据绑定包,提供基于对象绑定(ObjectMapper)解析的相关API和树模型(JsonNode)解析的相关API,这两个解析方式都依赖基于流模式解析的API。
  下面看看Jackson常用的注解。JsonProperties。此注解指定一个属性用于json映射,默认情况下映射的JSON属性与注解的属性名称相同,可以使用此注解的value值修改json属性名。此外,该注解还有一个index属性,用于指定生成json属性的顺序。JsonIgnore。用于排除某个属性,使得该属性不会被Jackson序列化和反序列化。JsonFormat。指定属性在序列化时转换成指定的格式。例如:JsonFormat(patternyyyyMMdd),表明属性在序列化时,会转换成yyyyMMdd这样的格式。JsonPropertyOrder。作用与JsonProperty的index属性类似,用于指定属性序列化时的顺序。
  接下来看一下Jackson怎么使用。
  首先要使用Jackson提供的功能,需要先添加依赖:dependencygroupIdcom。fasterxml。jackson。coregroupIdjacksondatabindartifactIdversion2。9。1versiondependency
  当添加jacksondatabind之后,jacksoncore和jacksonannotations也会被添加到Java项目工程中。
  先介绍下对象绑定ObjectMapper的使用。如下代码,ObjectMapper通过writeValue方法将对象序列化为json,并将json存储成String格式。通过readValue方法将json反序列化为对象。publicclassJsonUtilsTest{publicstaticvoidmain(String〔〕args)throwsIOException{ObjectMappermappernewObjectMapper();PersonpersonnewPerson();person。setName(大彬);person。setAge(18);对象序列化为jsonStringjsonStrmapper。writerWithDefaultPrettyPrinter()。writeValueAsString(person);System。out。println(jsonStr);json反序列化为对象PersondeserializedPersonmapper。readValue(jsonStr,Person。class);System。out。println(deserializedPerson);}output{name:大彬,age:18}Person(name大彬,age18)}
  ObjectMapper既可以处理简单数据类型,也能处理对象类型,但是有些情况下,比如我只想要json里面某一个属性的值,或者我不想创建一个POJO与之对应,只是临时使用,这时使用树模型JsonNode可以解决这些问题。
  将Object转换为JsonNode:publicclassJsonNodeTest{publicstaticvoidmain(String〔〕args){ObjectMapperobjectMappernewObjectMapper();PersonpersonnewPerson();person。setName(大彬);person。setAge(18);JsonNodepersonJsonNodeobjectMapper。valueToTree(person);取出name属性的值System。out。println(personJsonNode。get(name));}output大彬}
  将JsonNode转换为Object:publicclassJsonNodeTest1{publicstaticvoidmain(String〔〕args)throwsIOException{ObjectMapperobjectMappernewObjectMapper();StringpersonJson{name:大彬,age:18};JsonNodepersonJsonNodeobjectMapper。readTree(personJson);PersonpobjectMapper。treeToValue(personJsonNode,Person。class);System。out。println(p);}outputPerson(name大彬,age18)}文件工具类
  在平时工作当中,经常会遇到很多文件的操作,借助commonsio的FileUtils可以大大简化文件操作的开发工作量。
  首先引入commonsio依赖:dependencygroupIdcommonsiogroupIdcommonsioartifactIdversion2。5versiondependency
  读文件操作代码如下,其中,:publicclassFileUtilsTest{publicstaticvoidmain(String〔〕args)throwsIOException{输出:大彬最强System。out。println(FileUtils。readFileToString(newFile(E:demo。txt),UTF8));readLines返回ListString输出〔大彬,最强〕System。out。println(FileUtils。readLines(newFile(E:demo。txt),UTF8));}}
  写文件操作:publicclassFileUtilsTest1{publicstaticvoidmain(String〔〕args)throwsIOException{第一个参数File对象第二个参数是写入的字符串第三个参数是编码方式第四个参数是是否追加模式FileUtils。writeStringToFile(newFile(E:Demo。txt),大彬,UTF8,true);}}
  删除文件文件夹操作:FileUtils。deleteDirectory(newFile(E:test));FileUtils。deleteQuietly(newFile(E:test));永远不会抛出异常,传入的路径是文件夹,则会删除文件夹下所有文件参考链接
  https:juejin。cnpost6844904154113146894
  https:www。cnblogs。comguanbin529p11488869。html
投诉 评论 转载

超级实用的Java工具类大家好,我是大彬在平时开发过程中,经常会重复造轮子,在同一个项目里面,可能会出现各种各样每个人自己实现的工具类,这样不仅降低了开发效率,而且代码也不好维护。今天趁着……电池小充电慢信号差价格贵,iPhone还有这么多用户?虽然苹果手机电池小、充电慢、信号差、价格贵,但是苹果手机只是电池小、充电慢、信号差、价格贵。因为除了这些,其他方面苹果几乎是满分,而且这些方面分数也不低,假如安卓机在这几……首发丨熵评科技完成数千万元人民币天使轮融资,由朗玛峰创投领投创业邦获悉,近日,基于流程挖掘的企业级数字化运营平台熵评科技宣布获得数千万元人民币规模的天使轮融资,本轮投资由朗玛峰创投独家领投。企业数字化转型的核心是流程重塑。以数据库……云原生时代的APM作者刘浩杨来源尔达Erda公众号APM的全称是ApplicationPerformanceManagement(应用性能管理),早在90年代中期就有厂商提出性能管理……芯片领域弯道超车!谁也没想到,中芯国际成最大赢家去年9月15日华为禁令生效后,无芯可用的局面让华为深陷泥沼。此时不少网友表示作为国内半导体领域的龙头企业,中芯国际可以出手相救实现产业链合作与升级。让人意想不到的是中芯国……LockBit2。0勒索软件攻击埃森哲国内企业应加强防范近日,全球IT咨询巨头埃森哲遭到LockBit勒索团伙的网络攻击,公司6TB的内部数据被窃取,2500台计算机遭遇宕机,所中病毒为LockBit的2。0版本。由于LockBit……讯飞翻译笔S11,查词翻译样样行现在英语已成为一门活到老学到老的日常学科了,不仅是中小学生必学科目,即便到了大学,很多专业也依然要学习英语,甚至毕业后的好多工作也都会和英语有关。由此可见,学好英语还是非常有必……一加9Pro简评,值得购买吗?一加9Pro发售已经有一段时间了,经过将近两个月的使用,小编在这里给大家分享一下使用心得,也初步的介绍一下本机的具体使用感受。大大的哈苏H标志本机提供2年的保修服务……小米入股一手机摄像头部件研发商,后者股东含华为哈勃e公司讯,天眼查App显示,近日,辽宁中蓝电子科技有限公司发生工商变更,新增湖北小米长江产业基金合伙企业(有限合伙)为股东,同时公司注册资本增至约1。16亿元。辽宁中蓝电子科技……最前线传爱奇艺正在进行一轮裁员,互联网公司年关难过12月1日消息,据第一财经报道,爱奇艺近日正在裁员,裁员比例在2040之间,裁员补偿暂按N1发放,但目前裁员政策还在变化中,具体发放多少存在不确定性。另据新浪科技报道,此……芯海科技披露2021年年报实现营收6。59亿元4月27日,资本邦了解到,A股上市公司芯海科技(代码:688595。SH)发布2021年全年业绩报告。2021年1月1日2021年12月31日,公司实现营业收入6。59亿……三星GalaxyUnpacked今晚10点开幕ZFold3Z三星GalaxyUnpacked发布会将于北京时间今晚10点正式开幕,届时将会推出包括GalaxyZFold3ZFlip3两款可折叠手机在内的诸多新品。和往年不同的是,本届发布……
怎样看联想与柳传志的关系?全球首个启用5G的国家,比中国还要快,难怪称华为是功臣微博被曝大面积裁员,公司回应组织调整比特币修复至4万美金以上,挖矿紧箍咒或助涨绿色以太坊三星GalaxyZFold3折叠屏很炫酷,与SPen才是绝配AppStore限免多镜头相机PokerPop!山羊测试等,鸿海旗下鸿腾精密与林积为签署战略合作协议半月谈丨知网的霸道收费逻辑,该有一个说法了苹果公司承诺将进行民权审计华为轮值董事长郭平不会放弃手机业务10岁孩子玩游戏充1。8万苹果拒绝退款心动网络只退70雷军的人格魅力到底有多高?为什么那么多网友喜欢雷军?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利