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
获取不带扩展名的文件名
优质内容筛选与推荐>>