Guava
什么是 Guava?
Guava 是由 Google 提供的一个开源 Java 库,旨在提供一组丰富的工具类和函数,用于增强 Java 编程的便利性和效率。它涵盖了众多领域,从集合操作到并发编程,再到字符串处理和文件操作,Guava 提供了多种实用的功能,使得编写高质量的 Java 代码变得更加简单。
Guava 在英语中读作 /ˈɡwɑːvə/,类似于“瓜瓦”。
功能
Guava 主要模块的一些功能和特点:
- 集合(Collections): 提供了许多强大的集合类,如不可变集合、多集合、双向映射等,以及各种便捷的集合操作和转换。
- 并发(Concurrency): 提供了用于多线程编程的工具和实用类,如
ListenableFuture、Futures等,使并发编程更加容易。 - 缓存(Caches): 提供了可配置的本地缓存实现,可以用于缓存常用的计算结果,以提高性能。
- 字符串处理(Strings): 提供了字符串处理相关的工具类,如拆分、连接、填充、截取等。
- 原生类型操作(Primitives): 提供了操作原生数据类型的工具类,如处理数字、布尔值等。
- 数学运算(Math): 提供了精确数学运算的工具类,如处理分数、多项式等。
- I/O 操作(IO): 提供了更简化的 I/O 操作,如文件处理、流处理、字符集转换等。
- 反射(Reflection): 提供了更容易使用的反射 API,帮助处理类的元数据和反射操作。
- 事件总线(EventBus): 提供了事件发布-订阅模型,用于组件之间的解耦和通信。
- 日期时间(Time): 提供了对日期和时间的处理工具类,支持日期比较、格式化、解析等操作。
- 国际化(Internationalization): 提供了针对国际化的工具类,如字符集处理、文本处理等。
- 辅助工具(Utilities): 提供了一些通用的实用工具类,如抛出异常、预置条件检查、排序等。
常用类
- Immutable Collections(不可变集合): Guava 提供了一系列不可变集合类,如
ImmutableList、ImmutableSet、ImmutableMap等,用于创建不可变的集合对象,以保证数据的不可变性。 - Lists、Sets、Maps: Guava 的集合工具类提供了丰富的方法来操作列表、集合和映射,如创建、合并、拆分、过滤等。
- Multiset 和 Multimap:
Multiset表示元素可重复的集合,Multimap表示一个键对多个值的映射。这些类提供了处理重复元素和多值映射的能力。 - BiMap 和 Table:
BiMap表示一种双向映射,允许通过键和值进行双向查找。Table表示一个由两个键索引的二维表。 - Range 和 RangeSet:
Range表示一个范围,RangeSet表示一组不相交的范围。这些类在处理范围和区间时很有用。 - Optional:
Optional类用于表示可能存在或可能不存在的值,避免了使用null,提供了更安全的空值处理。 - Preconditions:
Preconditions类提供了一组静态方法,用于进行前置条件检查,帮助检查方法参数的有效性。 - Cache:
Cache类提供了本地缓存功能,可用于缓存常用的计算结果,以提高性能。 - Charsets 和 CharStreams: 提供了字符集和字符流的工具类,用于处理字符编码和字符流的操作。
- Joiner 和 Splitter: 用于将字符串拼接为一串,或将字符串拆分为多个元素。
- Strings: 提供了字符串处理的工具类,如填充、截取、修剪、格式化等操作。
- Iterables 和 Iterators: 提供了处理迭代器和可迭代对象的工具类,如遍历、过滤、映射等操作。
- Functional Programming: Guava 提供了一些函数式编程支持,如
Function、Predicate、Supplier等。 - Files: 提供了文件操作的工具类,如递归地列出文件、创建临时文件等。
- EventBus: 提供了事件发布-订阅模型,用于组件之间的解耦和通信。
如何开始使用 Guava
要开始使用 Guava,您需要在项目中引入相应的依赖。在 Gradle 或 Maven 中,您可以添加以下依赖:
Gradle:
groovyCopy code
dependencies {
implementation 'com.google.guava:guava:30.1-jre'
}
Maven:
xmlCopy code
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1-jre</version>
</dependency>
import com.google.common.collect.ImmutableList;
public class Main {
public static void main(String[] args) {
ImmutableList<String> list = ImmutableList.of("A", "B", "C");
System.out.println(list); // [A, B, C]
}
}
Guava 注解
以下是一些常用的 Guava 注解:
- @Nullable: 标记某个元素可以为
null,用于提醒开发人员对可能的空值进行处理。这个注解可用于方法参数、方法返回值和字段上。 - @NonNull: 标记某个元素不应该为
null,用于强制要求开发人员对空值进行检查。这个注解可用于方法参数、方法返回值和字段上。 - @VisibleForTesting: 表示一个方法或字段是为了测试而暴露出来的,不应该在正式代码中使用。这个注解用于标记为了测试目的而提供的方法。