Guava常用功能
Guava Learning
该工程主要用以学习Guava工具包的常用功能
前提
工程路径:https://github.com/litttlefisher/guava-learning
该工程是以jdk1.8为版本的代码,所以lambda表达式会大量的出现。如果自己的工程是jdk1.8以下的,请自行把lambda表达式恢复为原有样式。
详细介绍
下面列举自我感觉比较常用的功能
CaseFormat 字符串大小写改造
com.littlefisher.guava.base.CaseFormatTest
具体使用请参考模块代码
Objects
com.littlefisher.guava.base.ObjectsTest
Objects.equal 比较两个对象是否相等
在jdk1.7及以后的版本,可以使用java.util.Objects.equals方法进行代替
但是在做对象判空时,不太建议使用该方法
Splitter 字符串拆分
com.littlefisher.guava.base.SplitterTest
比较于jdk提供的split方法而言,该类分隔的更彻底一些。使用jdk提供的split方法,有时会莫名其妙的少些字符串。并且该Splitter类可以直接拆分成List集合,并做去重操作,而split方法返回的是数组。
Strings
com.littlefisher.guava.base.StringsTest
Strings.commonPrefix
字符串补前缀
Strings.commonSuffix
字符串补后缀
Strings.padStart
字符串前补齐某个字符
例如10,需要补齐成6个字符长度的000010
Strings.padEnd
字符串后补齐某个字符,跟上面的类似
BiMap 双向Map
com.littlefisher.guava.collect.BiMapTest
一般的Map都是根据key查找到value,这个Map可以根据value查找到key
业务侧已有是用到,key和value分别是userId和resourceId
集合创建
Maps.newHashMap()Lists.newArrayList()Sets.newHashSet()Lists.newLinkedList()Maps.newHashMap()
这些都是业务代码里使用Guava最多的代码了
Collections2 集合处理类
com.littlefisher.guava.collect.CollectionTest
Collections2.filter 对集合进行过滤
Iterators 集合迭代器工具类
com.littlefisher.guava.collect.IteratorsTest
Iterators.all
返回一个boolean值,校验集合是否都满足一个条件
Iterators.any
返回一个boolean值,校验集合是否存在一个元素满足条件的
举个例子,查询productDetail后,校验返回的合同列表中是否有授信合同模板
Iterators.get
返回下标位置的元素。如果仅这一个功能的话,跟集合直接调用get方法没什么区别,最主要的是该方法重载了一个方法,可以传入一个默认值,如果下标越界,会返回默认值
Iterators.filter
对集合进行元素过滤,返回一个过滤后的集合Iterator。Iterator可以通过Lists.newArrayList()转为集合。
Iterators.find
在集合中查找满足条件的元素。该方法也有重载方法,可以设置默认值,否则会抛异常。
Iterators.transform
根据当前构造一个子集合,例如原集合是List<CreditCreditApply>,而需要构造出来List<String>,其中都是creditApplyId。即可使用该方法。
Iterators.removeIf
根据条件删去集合中的元素。for循环中是不能直接删除元素的,否则会抛异常。但是可以使用该方法进行替换,其底层实现就是使用迭代器处理的。
Multimap 一个key可以对应一个List的Map
com.littlefisher.guava.collect.MultiMapTest
正常情况下,Map中key都是唯一的。而使用Multimap,当做put操作时,如果key已存在,则value会成为一个集合。
Files 文件处理工具类
com.littlefisher.guava.io.FilesTest
Files.write
文件写入。入参为byte数组和写入文件File对象
Files.readLines
按行读取文件,返回值为List<String>
Files.asCharSource
该方法具体参考代码,有可以记录行号的,也有可以一次性读取所有内容的。
Files.copy
文件复制
Files.equal
校验两个文件的文本内容是否相同
Files.createParentDirs
递归创建父目录
Files.getFileExtension
获取文件扩展名
Files.getNameWithoutExtension
获取不带扩展名的文件名

浙公网安备 33010602011771号