Guava

2023/08/10 Java 共 2370 字,约 7 分钟

Guava

什么是 Guava?

Guava 是由 Google 提供的一个开源 Java 库,旨在提供一组丰富的工具类和函数,用于增强 Java 编程的便利性和效率。它涵盖了众多领域,从集合操作到并发编程,再到字符串处理和文件操作,Guava 提供了多种实用的功能,使得编写高质量的 Java 代码变得更加简单。

Guava 在英语中读作 /ˈɡwɑːvə/,类似于“瓜瓦”。

功能

Guava 主要模块的一些功能和特点:

  1. 集合(Collections): 提供了许多强大的集合类,如不可变集合、多集合、双向映射等,以及各种便捷的集合操作和转换。
  2. 并发(Concurrency): 提供了用于多线程编程的工具和实用类,如 ListenableFuture、Futures 等,使并发编程更加容易。
  3. 缓存(Caches): 提供了可配置的本地缓存实现,可以用于缓存常用的计算结果,以提高性能。
  4. 字符串处理(Strings): 提供了字符串处理相关的工具类,如拆分、连接、填充、截取等。
  5. 原生类型操作(Primitives): 提供了操作原生数据类型的工具类,如处理数字、布尔值等。
  6. 数学运算(Math): 提供了精确数学运算的工具类,如处理分数、多项式等。
  7. I/O 操作(IO): 提供了更简化的 I/O 操作,如文件处理、流处理、字符集转换等。
  8. 反射(Reflection): 提供了更容易使用的反射 API,帮助处理类的元数据和反射操作。
  9. 事件总线(EventBus): 提供了事件发布-订阅模型,用于组件之间的解耦和通信。
  10. 日期时间(Time): 提供了对日期和时间的处理工具类,支持日期比较、格式化、解析等操作。
  11. 国际化(Internationalization): 提供了针对国际化的工具类,如字符集处理、文本处理等。
  12. 辅助工具(Utilities): 提供了一些通用的实用工具类,如抛出异常、预置条件检查、排序等。

常用类

  1. Immutable Collections(不可变集合): Guava 提供了一系列不可变集合类,如 ImmutableList、ImmutableSet、ImmutableMap 等,用于创建不可变的集合对象,以保证数据的不可变性。
  2. Lists、Sets、Maps: Guava 的集合工具类提供了丰富的方法来操作列表、集合和映射,如创建、合并、拆分、过滤等。
  3. Multiset 和 Multimap: Multiset 表示元素可重复的集合,Multimap 表示一个键对多个值的映射。这些类提供了处理重复元素和多值映射的能力。
  4. BiMap 和 Table: BiMap 表示一种双向映射,允许通过键和值进行双向查找。Table 表示一个由两个键索引的二维表。
  5. Range 和 RangeSet: Range 表示一个范围,RangeSet 表示一组不相交的范围。这些类在处理范围和区间时很有用。
  6. Optional: Optional 类用于表示可能存在或可能不存在的值,避免了使用 null,提供了更安全的空值处理。
  7. Preconditions: Preconditions 类提供了一组静态方法,用于进行前置条件检查,帮助检查方法参数的有效性。
  8. Cache: Cache 类提供了本地缓存功能,可用于缓存常用的计算结果,以提高性能。
  9. Charsets 和 CharStreams: 提供了字符集和字符流的工具类,用于处理字符编码和字符流的操作。
  10. Joiner 和 Splitter: 用于将字符串拼接为一串,或将字符串拆分为多个元素。
  11. Strings: 提供了字符串处理的工具类,如填充、截取、修剪、格式化等操作。
  12. Iterables 和 Iterators: 提供了处理迭代器和可迭代对象的工具类,如遍历、过滤、映射等操作。
  13. Functional Programming: Guava 提供了一些函数式编程支持,如 Function、Predicate、Supplier 等。
  14. Files: 提供了文件操作的工具类,如递归地列出文件、创建临时文件等。
  15. 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 注解:

  1. @Nullable: 标记某个元素可以为 null,用于提醒开发人员对可能的空值进行处理。这个注解可用于方法参数、方法返回值和字段上。
  2. @NonNull: 标记某个元素不应该为 null,用于强制要求开发人员对空值进行检查。这个注解可用于方法参数、方法返回值和字段上。
  3. @VisibleForTesting: 表示一个方法或字段是为了测试而暴露出来的,不应该在正式代码中使用。这个注解用于标记为了测试目的而提供的方法。

Search

    Table of Contents