guava学习笔记概览

author author     2022-08-08     554

关键词:

Guava是谷歌开源的一套Java开发类库,以简洁的编程风格著称,提供了很多实用的工具类,

在之前的工作中应用过Collections API和Guava提供的Cache,不过对Guava没有一个系统的了解,

为了更好的应用,准备好好学习一下这个优秀的开源工具包。

Guava主页:https://github.com/google/guava

以下内容来自Guava—Wiki

>>关于Guava

Guava项目包含了谷歌在基于Java的项目中依赖的几个Google核心库:集合,缓存,原语支持,并发库,常见注释,字符串处理,I / O等。

这些工具每天都被Google员工在生产服务中使用。

>>类库说明手册

(1)基本工具类:让使用Java语言更令人愉悦

1. 使用和避免 null:null 有语言歧义, 会产生令人费解的错误, 反正他总是让人不爽。很多 Guava 的工具类在遇到 null 时会直接拒绝或出错,而不是默默地接受他们。
2. 前提条件:更容易的对你的方法进行前提条件的测试。
3. 常见的对象方法: 简化了Object常用方法的实现, 如 hashCode() 和 toString()。
4. 排序: Guava 强大的 "fluent Comparator"比较器, 提供多关键字排序。
5. Throwable类: 简化了异常检查和错误传播。

(2)集合类

集合类库是 Guava 对 JDK 集合类的扩展, 这是 Guava 项目最完善和为人所知的部分。
1. Immutable collections(不变的集合): 防御性编程, 不可修改的集合,并且提高了效率。
2. New collection types(新集合类型):JDK collections 没有的一些集合类型,主要有:multisets,multimaps,tables, bidirectional maps等等
3. Powerful collection utilities(强大的集合工具类): java.util.Collections 中未包含的常用操作工具类
4. Extension utilities(扩展工具类):给 Collection 对象添加一个装饰器还是实现迭代器? 我们可以更容易的实现这些。

(3)缓存

本地缓存,可以很方便的操作缓存对象,并且支持各种缓存失效行为模式。

(4)Functional idioms(函数式)

简洁, Guava实现了Java的函数式编程,可以显著简化代码。

(5)Concurrency(并发):强大,简单的抽象,让我们更容易实现简单正确的并发性代码

1. ListenableFuture(可监听的Future): Futures,用于异步完成的回调。
2. Service: 控制事件的启动和关闭,为你管理复杂的状态逻辑。

(6)Strings
一个非常非常有用的字符串工具类: 提供 splitting,joining, padding 等操作。

(7)Primitives
扩展 JDK 中未提供的对原生类型(如int、char等)的操作, 包括某些类型的无符号的变量。

(8)Ranges
Guava 一个强大的 API,提供 Comparable 类型的范围处理, 包括连续和离散的情况。

(9)I/O

简化 I/O 操作, 特别是对 I/O 流和文件的操作, for Java 5 and 6。

(10)Hashing

提供比 Object.hashCode() 更复杂的 hash 方法, 提供 Bloom filters。

(11)EventBus

基于发布-订阅模式的组件通信,但是不需要明确地注册在委托对象中。

(12)Math
优化的 math 工具类,经过完整测试。

(13)Reflection
Guava 的 Java 反射机制工具类。

>>Guava的哲学

Guava可以使Java项目的开发效率成倍提高:我们的目标是使Java语言的工作更加愉快和更高效。

Guava中的JDK实用程序,例如 Collections API已被广泛采用,并且显着简化了所有Java代码。 我们希望继续这种传统。

 

guava学习笔记:optional优雅的使用null

在我们学习和使用Guava的Optional之前,我们需要来了解一下Java中null。因为,只有我们深入的了解了null的相关知识,我们才能更加深入体会领悟到Guava的Optional设计和使用上的优雅和简单。   null代表不确定的对象:  Jav... 查看详情

guava学习笔记使用瓜娃(guava)的选择和预判断使代码变得简洁

1,本文翻译自 http://eclipsesource.com/blogs/2012/06/06/cleaner-code-with-guava-optionals-and-preconditions/,有说的不对的地方,欢迎斧正。2,我开发软件的时候,朝着干净代码发展是我的特权,有一段时间,我曾在我几乎所有的项目中使用谷... 查看详情

buildingworldsinunreal学习笔记——01-02概览与引入

BuildingWorldsInUnreal学习笔记——01-02概览与引入Lec01世界搭建概览IntrotoWorldBuilding1搭建世界的第一步2准备工作Lec02创建地形CreatingLandscapes1Landscape参数与调整1.1Vertex与Point1.2Sections与Components1.3Resize与密度2雕刻地形本系列学习资料来源... 查看详情

[elasticsearch]螺丝刀学习笔记之——elasticsearch(7.0up学习概览)(代码片段)

...不拿出点东西庆祝庆祝呢?这不,压箱底的两篇学习笔记其中之一——ElasticSearch学习概览,就此JI出~~,祝自己和各位猿族兄嘚们节日快乐,同时欢迎各位猿友们一起交流指正~~🐵😘什么是ES?ES是一种... 查看详情

[elasticsearch]螺丝刀学习笔记之——elasticsearch(7.0up学习概览)(代码片段)

...不拿出点东西庆祝庆祝呢?这不,压箱底的两篇学习笔记其中之一——ElasticSearch学习概览,就此JI出~~,祝自己和各位猿族兄嘚们节日快乐,同时欢迎各位猿友们一起交流指正~~🐵😘什么是ES?ES是一种... 查看详情

[jvm]螺丝刀学习笔记之——重学jvm概览

这里是螺丝刀本人在学习JVM专栏时,结合自己理解对一些重点概览做的提炼总结,为方便自己学习和记忆,也更加欢迎感兴趣的童鞋一起交流探讨。JVM是如何运行JAVA文件的?Java文件在打包成jar或者war后会变成Class... 查看详情

[jvm]螺丝刀学习笔记之——重学jvm概览(代码片段)

这里是螺丝刀本人在学习JVM专栏时,结合自己理解对一些重点概览做的提炼总结,为方便自己学习和记忆,也更加欢迎感兴趣的童鞋一起交流探讨。JVM是如何运行JAVA文件的?Java文件在打包成jar或者war后会变成Class... 查看详情

[jvm]螺丝刀学习笔记之——重学jvm概览(代码片段)

这里是螺丝刀本人在学习JVM专栏时,结合自己理解对一些重点概览做的提炼总结,为方便自己学习和记忆,也更加欢迎感兴趣的童鞋一起交流探讨。JVM是如何运行JAVA文件的?Java文件在打包成jar或者war后会变成Class... 查看详情

机器学习实战读书笔记——机器学习概览

机器学习的应用示例分析生产线上的产品图像来对产品进行自动分类图像分类问题,使用卷积神经网络CNN通过脑部扫描发现肿瘤语义分割,图像中的每个像素都需要被分类,也是用CNN自动分类新闻、恶意评论标记、长... 查看详情

apollo无人驾驶课程笔记1-无人驾驶概览

在公众号【计算机视觉联盟】后台回复【9076】获取我的AI学习笔记;我的微信:Kingsplusa;  --by 王博Kings,985AI博士,CSDN博客专家,华为云专家本系列《无人驾驶干货铺》笔记目录:  自动驾驶|Apollo... 查看详情

索引uml学习笔记

行为图交互图交互概览图时间图顺序图通信图活动图状态及图用例图结构图包图类图对象图组件图部署图组合结构图 查看详情

reactredux学习笔记

ReactRouterReactRouter使用教程 Redux中间件middleware[译]深入浅出Redux中间件Redux学习之一:何为middleware? ES6ES6新特性概览 antant.design rekit 先记录两篇博文,等有时间,整理一篇 查看详情

swift学习笔记-1

Apple官方开发手冊地址:https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/LandingPage/index.html语法概览1SimpleValues常量定义:let变量定义:var常量或变量类型和初始值一致:varmyVariable=42myVariable=50letmy 查看详情

sass学习笔记

零、概览1、变量:$width2、嵌套:增加结构性及可读性3、混合mixin:copy的代码复用4、扩展/继承:@extend 联合声明代码复用5、流程控制:@if@each@for@while6、常用数组操作7、常用map操作8、函数: sassfunction手册9、导入:@impo... 查看详情

guava库学习:学习concurrencysettablefuture(代码片段)

转自:https://my.oschina.net/realfighter/blog/349931链接地址:http://www.xx566.com/detail/160.html  上一篇,Guava库学习:学习Concurrency(四)FutureCallback中,FutureCallback接口提供了onSuccess和onFailure方法,用于接收任务执行的结果, 查看详情

guava学习--事件驱动模型

转载:http://www.cnblogs.com/whitewolf/p/4132840.html     http://www.cnblogs.com/peida/p/EventBus.html 更好的文章:https://my.oschina.net/realfighter/blog/406342 Guava在guava-libraries中 查看详情

guava学习:guava集合工具-table接口(代码片段)

最近学习了下guava的使用,这里简单记录下一些常用并且使用的工具类把。看到table的使用时候真的是眼前一亮,之前的代码中写过很多的Map<String,Map<String,String>>这种格式的代码,这种阅读起来非常的不友好,甚至都不... 查看详情

fasterrcnn学习笔记

...——RPN和RCNN1.RPN2.RCNN全连接网络三、ROIPooling前言最近在学习FasterRCNN,所以做一个笔记来记录一下,这样也方便 查看详情