Guava——概述

Guava概述

    • 1、概述
    • [2、Guava 的使用](#2、Guava 的使用)
      • 2.1、引入
      • [2.2、基本工具 Basic utilities](#2.2、基本工具 [Basic utilities])
      • [2.3、集合 Collections](#2.3、集合 [Collections])
      • [2.4、缓存 Caches](#2.4、缓存 [Caches])
      • [2.5、函数式编程 Functional idioms](#2.5、函数式编程 [Functional idioms])
      • [2.6、并发 Concurrency](#2.6、并发 [Concurrency])
      • [2.7、字符串处理 Strings](#2.7、字符串处理 [Strings])
      • [2.8、原生类型 Primitives](#2.8、原生类型 [Primitives])
      • [2.9、区间 Ranges](#2.9、区间 [Ranges])
      • 2.10、I/O
      • [2.11、散列 Hash](#2.11、散列 [Hash])
      • [2.12、事件总线 EventBus](#2.12、事件总线 [EventBus])
      • [2.13、数学运算 Math](#2.13、数学运算 [Math])
      • [2.14、反射 Reflection](#2.14、反射 [Reflection])

1、概述

Guava 是一个 Google 开发的基于 Java 的类库集合的扩展项目,包括集合、缓存、原生类型支持、并发库、通用注解、字符串处理、I/O 和验证的实用方法等等。

1.1、Guava的优点

  • 标准化 - Guava 库是由谷歌托管。
  • 高效 - 可靠,快速和有效的扩展 JAVA 标准库。
  • 优化 - Guava 库经过高度的优化。

1.2、Guava包介绍

Guava 项目托管在 Github 上,可以使用 git clone https://github.com/google/guava.git 下载 Guava 源码,从源码可以看到,Guava 主要有下面的几个包:

  • com.google.common.annotations:普通注解类型
  • com.google.common.base:基本工具类库和接口
  • com.google.common.cache:缓存工具包,非常简单易用且功能强大的JVM内缓存
  • com.google.common.collect:带泛型的集合接口扩展和实现,以及工具类
  • com.google.common.escape:转义工具
  • com.google.common.eventbus:发布订阅风格的事件总线
  • com.google.common.graph:处理基于图的数据结构
  • com.google.common.hash: 哈希工具包
  • com.google.common.html:Html字符串转义
  • com.google.common.io:I/O工具包
  • com.google.common.math:原始算术类型和超大数的运算工具包
  • com.google.common.net:网络工具包
  • com.google.common.primitives:八种原始类型和无符号类型的静态工具包
  • com.google.common.reflect:反射工具包
  • com.google.common.util.concurrent:多线程工具
  • com.google.common.xml:xml字符串转义

2、Guava 的使用

2.1、引入

xml 复制代码
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>33.0.0-jre</version>
</dependency>
  • JDK 版本兼容:
    • -jre 后缀:适用于标准的 Java 8 及以上运行环境(推荐)。
    • -android 后缀:如果项目需要兼容 Android 或极低版本的 Java 环境,可将版本号替换为 33.0.0-android。
  • 版本更新建议:如果使用的是 Java 8 或更高版本,建议直接使用 33.x 或更新的稳定版本,以获得最佳性能与安全补丁。

2.2、基本工具 Basic utilities

让使用Java语言变得更舒适。

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

2.3、集合 Collections

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 的装饰器,或实现迭代器。

2.4、缓存 Caches

Guava Cache:本地缓存,可以很方便的操作缓存对象,支持多种缓存过期策略。

2.5、函数式编程 Functional idioms

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

2.6、并发 Concurrency

强大而简单的抽象,让编写正确的并发代码更简单。

  1. Listenable Future(可监听的 Future):Futures,用于异步完成的回调。
  2. Service 框架:抽象可开启和关闭的服务,帮助你维护服务的状态逻辑。

2.7、字符串处理 Strings

一个非常非常有用的字符串工具类:提供 splitting(分割),joining(连接),padding(填充)等操作。

2.8、原生类型 Primitives

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

2.9、区间 Ranges

Guava 提供的一个强大的 Comparable(可比较)类型的区间 API,包括连续和离散类型。

2.10、I/O

简化 I/O 操作,特别是对 I/O 流和文件的操作,针对 Java5和6版本。

2.11、散列 Hash

提供比 Object.hashCode() 更复杂的散列(hash)实现,提供 Bloom filters(布隆过滤器)的实现。

2.12、事件总线 EventBus

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

2.13、数学运算 Math

优化的、充分测试的数学运算工具类。

2.14、反射 Reflection

Guava 的 Java 反射机制工具类。

相关推荐
谢亮_vipxieliang15 天前
ValidX vs Google Guava Preconditions:验证 vs 断言
java·spring boot·后端·spring cloud·hibernate·guava
吴声子夜歌18 天前
Guava——散列
java·guava
吴声子夜歌18 天前
Guava——并发(二)
java·网络·guava
吴声子夜歌18 天前
Guava——事件总线
java·网络·guava
吴声子夜歌18 天前
Guava——并发(一)
java·guava
吴声子夜歌18 天前
Guava——反射
java·开发语言·guava
吴声子夜歌19 天前
Guava——基本工具(二)
windows·python·guava
吴声子夜歌19 天前
Guava——基本工具(一)
windows·guava
吴声子夜歌19 天前
Guava——集合(二)
java·guava
吴声子夜歌19 天前
Guava——缓存
缓存·guava