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
业务侧已有是用到,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

获取不带扩展名的文件名

优质内容筛选与推荐>>
1、android 自定义命名空间
2、ObjectAnimator属性动画示例代码
3、MUI - 打开页面默认弹出键盘及返回关闭键盘
4、[Python设计模式] 第18章 游戏角色备份——备忘录模式
5、Linux下sed,awk,grep,cut,find等常用命令介绍


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn