littlefisher666 / guava-learning

Guava代码学习

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Guava Learning

该工程主要用以学习Guava工具包的常用功能

前提

该工程是以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 业务侧已有是用到,keyvalue分别是userIdresourceId

集合创建

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

对集合进行元素过滤,返回一个过滤后的集合IteratorIterator可以通过Lists.newArrayList()转为集合。

Iterators.find

在集合中查找满足条件的元素。该方法也有重载方法,可以设置默认值,否则会抛异常。

Iterators.transform

根据当前构造一个子集合,例如原集合是List<CreditCreditApply>,而需要构造出来List<String>,其中都是creditApplyId。即可使用该方法。

Iterators.removeIf

根据条件删去集合中的元素。for循环中是不能直接删除元素的,否则会抛异常。但是可以使用该方法进行替换,其底层实现就是使用迭代器处理的。

Multimap 一个key可以对应一个ListMap

com.littlefisher.guava.collect.MultiMapTest 正常情况下,Mapkey都是唯一的。而使用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

获取不带扩展名的文件名

About

Guava代码学习


Languages

Language:Java 100.0%