当前位置: 首页 > 科技观察

代码量减少90%,Java程序员必须知道的工具库

时间:2023-03-14 17:26:01 科技观察

工作多年,发现有很多工具库可以大大简化代码量,提高开发效率。而这些类库早已成为行业标准类库,也被大公司内部使用。如果有人在我刚刚工作的时候告诉我使用这些工具类库就好了!看看你用过哪些工具库。1.Java自带的工具和方法1.1List集合拼接成逗号分隔的字符串//如何将List集合拼接成逗号分隔的字符串a,b,cListlist=Arrays.asList("a","b","c");//第一种方法,可以使用流streamStringjoin=list.stream().collect(Collectors.joining(","));System.out.println(join);//Outputa,b,c//第二种方法,其实String也有join方法来实现这个功能Stringjoin=String.join(",",list);System.out.println(join);//Outputa,b,c1.2比较两个字符串是否相等,忽略大小写if(strA.equalsIgnoreCase(strB)){System.out.println("equal");}1.3比较两个对象是否相等我们使用equals时比较两个对象相等时,需要判断左边的对象为空,否则可能会报空指针异常。我们可以使用方法Objects.equals(strA,strB);源代码是这样的publicstaticbooleanequals(Objecta,Objectb){return(a==b)||(a!=null&&a.equals(b));}1.4两个List集合的交集();list1.add("a");list1.add("b");list1.add("c");Listlist2=newArrayList<>();list2.add("a");list2.add("b");list2.add("d");list1.retainAll(list2);System.out.println(list1);//输出[a,b]2.Apachecommons工具库Apachecommons是功能最强大、使用最广泛的工具库,有很多子库,下面介绍一些最常用的2.1commons-lang,java.lang增强版推荐使用commons-lang3,优化了部分API。原来的commons-lang已经停止更新了。Maven依赖项是:org。apache.commonscommons-lang33.12.02.1.1字符串判断空参数CharSequence类型是String、StringBuilder、StringBuffer类的父类可以通过下面的方法直接判断为空,下面是源码:;}//为空时,会去除字符串中的空格、换行、制表符等空白字符publicstaticbooleanisBlank(finalCharSequencecs){finalintstrLen=length(cs);if(strLen==0){returntrue;}for(inti=0;ipair=ImmutablePair.of(1,"yideng");System.out.println(pair.getLeft()+","+pair.getRight());//输出1,yideng//返回三个字段ImmutableTripletriple=ImmutableTriple.of(1,"yideng",newDate());System.out.println(triple.getLeft()+","+triple.getMiddle()+","+triple.getRight());//输出1,yideng,WedApr0723:30:00CST20212.2commons-collections收集工具Maven依赖为:org.apache.commonscommons-collections44.42.2.1CollectionEmptyJudgment封装了collection空判断的方法,下面是源码:coll){return!isEmpty(coll);}//两个集合的交集Collectioncollection=CollectionUtils.retainAll(listA,listB);//两个集合的并集Collectioncollection=CollectionUtils.union(listA,listB);//两个集合相减集合Collectioncollection=CollectionUtils.subtract(listA,listB);2.3common-beanutils操作对象Maven依赖:commons-beanutilscommons-beanutils1.9.4publicclassUser{privateIntegerid;privateStringname;}设置对象属性Useruser=newUser();BeanUtils.setProperty(user,"id",1);BeanUtils.setProperty(user,"name","yideng");System.out.println(BeanUtils.getProperty(user,"name"));//输出yidengSystem.out.println(user);//输出{"id":1,"name":"yideng"}对象与map互传//对象互传mapMapma??p=BeanUtils.describe(user);System.out.println(map);//输出{"id":"1","name":"yideng"}//map传输对象UsernewUser=newUser();BeanUtils.populate(newUser,map);System.out.println(newUser);//输出{"id":1,"name":"yideng"}2.4commons-io文件流处理Maven依赖:commons-iocommons-io2.8.0文件处理Filefile=newFile("demo1.txt");//读取文件List行=FileUtils.readLines(file,Charset.defaultCharset());//写入文件FileUtils.writeLines(newFile("demo2.txt"),lines);//复制文件FileUtils.copyFile(srcFile,destFile);3.GoogleGuava工具库Maven依赖:com.google.guavaguava30.1.1-jre3.1创建集合Listlist=Lists.newArrayList();Listlist=Lists.newArrayList(1,2,3);//反转listListreverse=Lists.reverse(list);System.out.println(reverse);//输出[3,2,1]//list集合中元素过多,可以分成几个集合,每个集合有10个元素List>partition=Lists。partition(list,10);Mapma??p=Maps.newHashMap();Setset=Sets.newHashSet();3.2黑科技合集3.2.1MultimapHashMapMultimapmap=ArrayListMultimap.create();map.put("key",1);map.put("key",2);Collectionvalues=map.get("key");System.out.println(map);//输出{"key":[1,2]}//也可以返回臃肿的MapMap>收藏地图=地图.asMap();省事简单,省去创建Map>3.2.2BiMap一种HashMapBiMapbiMap=HashBiMap.create连值都不能重复的();//如果value重复,put方法会抛出异常,除非使用forcePut方法biMap.put("key","value");System.out.println(biMap);//输出{"key":"value"}//既然value不能重复,为什么不实现一个翻转key/value的方法,已经BiMapinverse=biMap.inverse();System.out.println(inverse);//Output{"value":"key"}这个其实是双向映射,在某些场景下还是很实用的3.2.3TableAHashMapwithtwokeys//一组用户,同时按年龄和性别分组Tabletable=HashBasedTable.create();table.put(18,"Male","yideng");table.put(18,"Female","Lily");System.out.println(table.get(18,"Male"));//输出yideng//这其实是一个二维Map,可以查看行数据Maprow=table.row(18);System.out.println(row);//输出{"male":"yideng","female":"Lily"}//查看列数据Mapcolumn=table.column("Male");System.out.println(column);//Output{18:"yideng"}3.2.4Multiset一种用到的CountSetMultisetmultiset=HashMultiset.create();multiset.add("apple");multiset.add("apple");multiset.add("orange");System.out.println(multiset.count("apple"));//输出2//查看去重元素Setset=multiset.elementSet();System.out.println(set);//输出["orange","apple"]//还可以查看没有去重的元素Iteratoriterator=multiset.iterator();while(我iterator.hasNext()){System.out.println(iterator.next());}//手动设置一个元素出现的次数multiset.setCount("apple",5);