【吐血整理】想学Google Guava看这篇就够了「建议收藏」

【吐血整理】想学Google Guava看这篇就够了「建议收藏」GoogleGuava常用功能梳理,想学习Guava的看过来

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Guava是谷歌提供的一个核心Java类库,其中包括新的集合类型、不可变集合、图库,以及用于并发、I/O、Hash、缓存、字符串等的
实用工具。它在谷歌中的大多数Java项目中被广泛使用,也被许多其他公司广泛使用,熟练掌握这些工具类能帮助我们快速的处理日常开发中的一些问题,比如,不可变集合、集合的转换、字符串处理、本地缓存等

最近一段时间,我把Guava中常用到的工具类学了一遍,感觉有些工具类还是挺有用的,至少它帮你封装了很多功能,让你在处理一些逻辑的时候,不用太关注细节,把Guava的工具类直接拿来用就好了。下面我就介绍一下Guava中最常用的一些工具:

1、Guava不可变集合

不可变集合就是集合创建之后元素是不可改变的,主要用途如下:

  • 不可变对象提供给别人使用时是安全的,因为不可变,所有人都无法进行修改,只能读
  • 支持多个线程调用,不存在竞争的问题,天然支持多线程
  • 不可变集合节省内存空间,因为不可变,集合空间在创建时就已经确定好了,不用考虑扩容等问题,内存利用率高
  • 不可变集合可用于常量

Guava针对常用的集合类型List、Set、Map等都提供了不可变类型的集合

详细使用方法,可查看另一篇博客《Guava系列之不可变集合》

2、Guava新的集合类型

Guava提供了几种新的集合类型,补充了JDK中的集合类型
比如我们要统计List中某个元素出现的次数,如果使用JDK中的list就需要使用循环遍历进行统计,但使用了Guava的Multiset就可以直接统计出来元素出现的次数

再比如,我们要通过Map中的key查找value,通过value来查找值,也就是需要一个双向Map,如果使用JDK中的Map,我们需要维护两个Map,一个从key映射到value,另外一个从value映射到key,而且不管是新增还是修改Map中的元素,都要保持两个Map同步修改,维护成本太高了,使用Guava的BiMap可以通过一个Map轻松解决这个问题

更多新集合类型请查看《Guava系列之新的集合类型》

3、Guava超实用的集合工具类

JDK中集合的操作已经提供了很多工具类,比如基本的集合交集、并集、差集这些常用的操作,Guava中提供的工具类是对JDK的补充,在Guava中提供了静态的创建集合的方法,还有集合的很多操作,比如笛卡尔集、list反转、排列组合、Set转Map、Map的各种过滤等

新集合工具类的详细使用,请查看《Guava系列之超实用的集合工具类》

4、Guava本地缓存Cache

Guava中的缓存是本地缓存的实现,与ConcurrentMap相似,但不完全一样。最基本的区别就是,ConcurrentMap会一直保存添加进去的元素,除非你主动remove掉。而Guava Cache为了限制内存的使用,通常都会设置自动回收

Guava Cache的使用场景:

  • 以空间换取时间,就是你愿意用内存的消耗来换取读取性能的提升
  • 你已经预测到某些数据会被频繁的查询
  • 缓存中存放的数据不会超过内存空间

Guava Cache的详细使用方法,可查看《Guava系列之Cache》

5、Guava强大的String工具类

String是我们平时开发工作当中使用最频繁的类型, Guava提供了字符串的连接、分隔等操作,特别是字符串的匹配,那是相当强大,比如提取出字符串中的字母、数字、特殊字符等,可以从指定字符串中提取、删除、替换等操作

举个例子,提取“er 3j6o 3k ,)$ wt@ wr4576je ow3453535345irjew jwfel ” 字符串的字母,直接可以调用现成的方法

再比如,你需要将上述字符串中的数字全部移除或替换成其他字符,都有现成的方法,使用起来非常方便,只要你使用好了这些工具类,

可以大大提升你对字符串的处理效率

具体详细用法,请查看《Guava系列之强大的String工具类》

6、Guava限流RateLimiter

在互联网高并发场景下,限流是用来保证系统稳定性的一种手段,当系统遭遇瞬时流量激增时,可能会由于系统资源耗尽导致宕机。而限流可以把一小部分流量拒绝掉,保证大部分流量可以正常访问,从而保证系统只接收承受范围以内的请求,多余的请求给拒绝掉

我们常用的限流算法有:漏桶算法、令牌桶算法

Guava中的限流使用的是令牌桶算法,RateLimiter提供了两种限流实现

  • 平滑突发限流(SmoothBursty)
  • 平滑预热限流(SmoothWarmingUp)

Guava RateLimiter的详细用法,请查看《Guava系列之限流RateLimiter》

7、Guava发布/订阅EventBus

EventBus是Guava中实现的用于发布/订阅模式的事件处理组件,它是设计模式中观察者模式的优雅实现

EventBus是消息总线,它会根据消息的类型发送到指定的消息订阅者,当有消息没有订阅者接收时,会将消息发送给DeadEvent

关于EventBus的详细用法,请查看《Guava系列之EventBus》


以上是对最近学习Guava类库的一个总结,它包括了我们平常开发中最常用的一些组件工具类,熟练掌握这些工具类的使用方法,必然会让你的工作如虎添翼~

如果感觉对你有些帮忙,请收藏好,你的关注和点赞是对我最大的鼓励!
如果想跟我一起学习,坚信技术改变世界,请关注Java天堂公众号,我会定期分享自己的学习成果,第一时间推送给您

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/200846.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • tomcat宕机解决方法

    tomcat宕机解决方法最近项目出现tomcat宕机的情况,即项目运行一段时间后tomcat就会停止运行,解决方法步骤如下:首先进入linux服务器,使用命令top进行查看,发现tomcat的cpu利用率很高,超过100%接着,使用命令ps-ef|greptomcat,查找到对应的pid接着使用jmap-heappid.发现PermGen的利用率达到了99.99%,所以初步确定了问题是出在永久带内存

  • 安捷伦频谱仪n9010a_安捷伦频谱仪LAN设置

    安捷伦频谱仪n9010a_安捷伦频谱仪LAN设置频谱仪操作说明按键输入所测6个频点的中心频率。(注:与步骤8对应,若所测频点为4临频输出,此处频率=第一个频点中心频率+12MHz;若所测频点为6临频输出,此处频率=第一个频点中心频率+20MHz;)20.点击“AMPTD”对应的右侧按键,液晶屏右侧出现一列选项;21.点击“Attenuation”对应的右侧按键,左右旋转按键矩阵中的旋钮键,使得频谱两边的值载噪比最大,此值即为设备的载噪比六.…

  • request中的方法_request有什么方法

    request中的方法_request有什么方法requestgetRealPath的替代方法

  • pycharm英文读音_pycharm英文界面翻译

    pycharm英文读音_pycharm英文界面翻译使用的是PyCharm2018.3.4代码的自动补全在PyCharm中找到PowerSaveMode选项,将前面的对勾去掉。在左上角File的展开栏的倒数第二行在PyCharm的最右下角有个????的样子(在????旁边),单击点开就可看到PowerSaveMode选项在这个Currentinspectionprofile中可以设置HighlightingLevel即检查代码严格程度。(过多的不…

  • Charles抓包显示乱码解决方法

    Charles抓包显示乱码解决方法

  • NSGA2 算法MATLAB完整代码 中文注释详解

    NSGA2 算法MATLAB完整代码 中文注释详解2019.7.17很意外本人这篇文章受到很多人的关注,在此把源码贴出来供大家更好的理解学习。https://download.csdn.net/download/joekepler/10590751========================分割=====================================本人最近研究NSGA2算法,网上有很多示例代码,但是基本没有…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号