Google Guava精讲(一)-Guava是什么?能做什么?

https://mvnrepository.com/artifact/com.google.guava/guava

作为Java栈的测试工程师,在写代码时候会频繁遇到字符串处理、缓存、反射等问题,我们最常规的做法就是,为了使原生的JDK方法好用,通常是做了一层又一层封装,然后提供整个测试团队使用,而渐渐的就形成了自己的Java工具箱。当然Guava的缘起也是如此。

Guava 是由Google开发的基于Java的开源库,包含许多Google核心库,它有助于最佳编码实践,并有助于减少编码错误。它为集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O 等等提供实用程序方法。

java 复制代码
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>30.1-jre</version>
</dependency>

https://mvnrepository.com/artifact/com.google.guava/guava

https://github.com/google/guava/wiki

扒Javadoc 学习Guava效率不高。因此,本文就出现了,尝试对 Guava 中一些最常用、最强大的功能进行通俗易懂的讲解和演示。

总体而言,Guava包含以下功能模块:

1. 基础工具包(Basic utilities) :帮助开发者提升Java编程效率。

1.1. 正确使用null和避免NPE

null 本身就是含糊不清的,它经常产生一些令人摸不着头脑的报错,耗费开发者的调试时间。而Guava 工具包中的实现程序都会明确拒绝null导致的程序报错,而不是盲目接受null。

1.2. 预处理

预处理工具包让测试更方便。

1.3. 常见的对象方法:

简化实现对象方法,例如hashCode() 和toString()。

1.4. 排序

Guava 提供强大的 "流畅比较器 "类

1.5. Trowables

简化异常和错误检查。

2. Collections

Guava对JDK collections原生方法进行了扩展,这些是Guava最核心和最受用户推崇的功能。

  • immutable collections(恒定集合),用于防御性编程、恒定集合和提高效率。
  • 新的集合类型,对JDK集合的补充:多集合、多映射、表格、双向映射等。
  • 强大的集合实用工具,用于java.util.Collections 中未提供的常用操作。
  • 更多扩展工具:例如编写集合装饰器,实现迭代器等,我们可以让这一切变得更简单实现。

3. Graphs

用于对图形结构数据(即实体和实体之间的关系)进行建模的库。主要功能包括:

  • Graph:其边界是匿名实体,没有自己的身份或信息。
  • 值图(ValueGraph):图的边具有相关的非唯一值。
  • 网络图:边缘为唯一对象的图形。
  • 支持可变和不可变、有向和无向的图形,以及其他一些属性。
  • 网络: 其边是唯一对象的图。
  • 支持可变和不可变,有向和无向以及其他几个属性的图。

4. Caches缓存

正确的使用本地缓存,支持多种缓存过期方式。

5. 函数式编程

使用Guava 的函数式编程,可以大大简化开发者代码。

6. 并发编程Concurrency

功能强大、简单抽象,可以帮助开发者更轻松地编写正确的并发代码。

  • ListenableFuture: 完成后回调。
  • Service:可启动和关闭的事物,为你处理困难的状态逻辑。

7. 字符串

提供一些非常有用的字符串处理方法: 拆分,拼接,替换等。

8. 原生类型支持

对原生类型 的操作,如int和char,还包括某些类型的无符号变量。

9. Ranges

Guava 功能强大的 API,用于处理连续和离散可比较类型的范围。

10. I/O

简化了I/O操作。

11. 哈希

提供比Object.hashCode() 的更复杂的哈希工具,包括Bloom过滤器。

12. EventBus

组件之间的发布-订阅式通信,而无需组件彼此显式注册。

13. 数学

提供经过优化(在JDK工具基础上)的数学实用工具。

14. 反射

相关推荐
武子康1 小时前
Java-80 深入浅出 RPC Dubbo 动态服务降级:从雪崩防护到配置中心秒级生效
java·分布式·后端·spring·微服务·rpc·dubbo
-SGlow-3 小时前
MySQL相关概念和易错知识点(2)(表结构的操作、数据类型、约束)
linux·运维·服务器·数据库·mysql
明月5664 小时前
Oracle 误删数据恢复
数据库·oracle
YuTaoShao4 小时前
【LeetCode 热题 100】131. 分割回文串——回溯
java·算法·leetcode·深度优先
源码_V_saaskw4 小时前
JAVA图文短视频交友+自营商城系统源码支持小程序+Android+IOS+H5
java·微信小程序·小程序·uni-app·音视频·交友
超浪的晨4 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
双力臂4045 小时前
Spring Boot 单元测试进阶:JUnit5 + Mock测试与切片测试实战及覆盖率报告生成
java·spring boot·后端·单元测试
♡喜欢做梦5 小时前
【MySQL】深入浅出事务:保证数据一致性的核心武器
数据库·mysql
遇见你的雩风5 小时前
MySQL的认识与基本操作
数据库·mysql
Edingbrugh.南空5 小时前
Aerospike与Redis深度对比:从架构到性能的全方位解析
java·开发语言·spring