工作多年,发现有很多工具库可以大大简化代码量,提高开发效率,但初级开发者不不知道。而这些类库早已成为行业标准类库,也被大公司内部使用。如果有人在我刚刚工作的时候告诉我使用这些工具类库就好了!看看你用过哪些工具库。1.Java自带的工具和方法1.1List集合拼接成逗号分隔的字符串//如何将list集合拼接成逗号分隔的字符串a,b,cListlist=Arrays.asList("a","b","c");//第一种方法,可以使用streamstreamStringjoin=list.stream().collect(Collectors.joining(","));System.out.println(join);//输出a,b,c//第二种方法,其实String也有join方法来实现这个功能Stringjoin=String.join(",",list);System.out.println(加入);//输出a,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集合IntersectionListlist1=newArrayList<>();list1.add("a");list1.add("b");list1.add("c");Listlist2=newArrayList<>();list2.add("a");list2.add("t;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的父类,都可以通过下面的方法直接判断为空,下面是源码:publicstaticbooleanisEmpty(finalCharSequencecs){returncs==null||cs.length()==0;}publicstaticbooleanisNotEmpty(finalCharSequencecs){return!isEmpty(cs);}//为空时,它将删除字符串中的空白字符,例如空格、换行符、TablepublicstaticbooleanisBlank(finalCharSequencecs){finalintstrLen=length(cs);如果(strLen==0){返回真;}for(inti=0;ipair=ImmutablePair.of(1,"一灯");System.out.println(pair.getLeft()+","+pair.getR右());//输出1,yideng//返回三个字段ImmutableTripletriple=ImmutableTriple.of(1,"yideng",newDate());System.out.println(triple.getLeft()+",,"+triple.getMiddle()+","+triple.getRight());//output1,yideng,WedApr0723:30:00CST20212.2commons-collectionscollectiontoolclassMaven依赖为:org.apache.commonscommons-collections44.42.2.1集合判断封装了集合判断Empty方法,下面是源码:publicstaticbooleanisEmpty(finalCollection>coll){returncoll==null||coll.isEmpty();}publicstaticbooleanisNotEmpty(finalCollection>coll){返回!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{私有整数id;privateStringname;}设置对象属性Useruser=newUser();BeanUtils.setProperty(user,"id",1);BeanUtils.setProperty(user,"name","yideng");System.out.println(BeanUtils.getProperty(用户,"姓名"));//输出yidengSystem.out.println(user);//输出{"id":1,"name":"yideng"}对象与map相互转换//对象转换mapMapmap=BeanUtils.describe(user);System.out.println(map);//输出{"id":"1","name":"yideng"}//映射传输对象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");//读文件Listlines=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);//创建地图并设置setMapmap=Maps.newHashMap();Setset=Sets.newHashSet();3.2黑科技合集3.2.1Multimap一个key可以映射HashMapMultimapmapofmultiplevalues=ArrayListMultimap.create();map.put("key",1);map.put("key",2);Collectionvalues=map.get("key");System.out.println(map);//output{"key":[1,2]}//也可以返回你之前用的臃肿的MapMap>collectionMap=map.asMap();省事简单,省去创建Map>3.2.1BiMap一种HashMapBiMap连值都不能重复的情况biMap=HashBiMap.create();//如果值重复,put方法会抛出异常,除非使用forcePut方法biMap.put("key","value");System.out.println(biMap);//output{"key":"value"}//既然value不能重复,为什么不实现一个key/value翻转的方法呢,已经有一个BiMapinverse=biMap.inverse();System.out.println(逆);//output{"value":"key"}这其实是一个双向映射,在某些场景下仍然有用3.2.3Table一种带两个键的HashMap//一组用户,同时按年龄和性别分组Tabletable=HashBasedTable.create();table.put(18,"男","一灯");table.put(18,"女","百合");System.out.println(table.get(18,"男"));//输出yideng//这个其实是一个二维的Map,可以查看行数据Maprow=table.row(18);System.out.println(row);//输出{"male":"yideng","female":"Lily"}//查看列数据Mapcolumn=table.column("male");System.out.println(列);//输出{18:"yideng"}3.2.4Multiset一种使用SetMultiset计数multiset=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("苹果",5);您知道其他常用的工具方法或类库吗?