基于 Google Guava 官方教程的解答
📚 Guava 提供了哪些 JDK 不具备的 API?
Guava 扩展了 JDK 的集合框架,提供了多种 JDK 没有的实用 API:
-
不可变集合(Immutable Collections)
ImmutableList、ImmutableSet、ImmutableMap等- 特性:创建后不可修改,线程安全,性能优于
Collections.unmodifiableXXX()
// 创建方式 ImmutableList<String> list = ImmutableList.of("A", "B", "C"); ImmutableMap<String, Integer> map = ImmutableMap.of("k1", 1, "k2", 2); -
新集合类型
类型 用途 实现类 Multiset元素可重复的集合(带计数) HashMultiset,TreeMultisetMultimap一键对应多个值(替代 Map<K, List<V>>)ArrayListMultimap,HashMultimapBiMap键值双向唯一映射( inverse()反转)HashBiMap,ImmutableBiMapTable二维表结构(行+列作为键) HashBasedTable,TreeBasedTable// Multimap 示例 Multimap<String, String> multimap = ArrayListMultimap.create(); multimap.put("语言", "Java"); multimap.put("语言", "Python"); // 一键多值 -
缓存工具
CacheBuilder:构建高性能本地缓存(支持过期策略、弱引用等)
Cache<String, Data> cache = CacheBuilder.newBuilder().maximumSize(1000).expireAfterWrite(10, TimeUnit.MINUTES).build(); -
函数式工具
Function/Predicate接口 +Collections2.transform/filter
List<String> upper = Lists.transform(list, String::toUpperCase); -
字符串处理
Joiner:安全连接字符串(自动处理 null)Splitter:灵活分割字符串
String joined = Joiner.on("|").skipNulls().join("A", null, "B"); // "A|B" -
原生类型增强
Ints,Longs等工具类(如Ints.tryParse())
🌟 简单介绍 Guava
Guava(Google Core Libraries for Java) 是 Google 开源的 Java 核心库:
- 定位:增强 JDK 能力,提供 Google 内部项目验证的最佳实践
- 特点:
- 填补 JDK 功能空白(如不可变集合、多维集合)
- 强调代码健壮性(如强制空值检查
Optional) - 高性能优化(如缓存工具比
ConcurrentHashMap快 30%+) - 开发效率提升(减少模板代码)
📦 Guava 包含的主要内容
根据官方教程目录,Guava 分为 13 个模块:
| 模块 | 核心功能 |
|---|---|
| 1. 基本工具 | Optional(空安全)、Preconditions(参数校验)、Ordering(排序) |
| 2. 集合 | 不可变集合、Multiset/Multimap/Table、集合工具类 |
| 3. 缓存 | CacheBuilder(本地缓存框架) |
| 4. 函数式编程 | 函数接口与集合操作(Java 8 前核心方案) |
| 5. 并发 | ListenableFuture(异步回调)、Service(服务生命周期管理) |
| 6. 字符串处理 | Splitter/Joiner/CharMatcher |
| 7. 原生类型 | Ints/Longs 等基本类型工具 |
| 8. 区间 | Range(数学区间操作) |
| 9. I/O | 简化 Java I/O 操作(如 Files/ByteStreams) |
| 10. 散列 | BloomFilter(布隆过滤器)、Hashing(哈希算法) |
| 11. 事件总线 | EventBus(发布-订阅模式) |
| 12. 数学运算 | 优化数学计算工具 |
| 13. 反射 | TypeToken(泛型类型安全访问) |
示例场景:使用
EventBus解耦组件// 发布者 eventBus.post(new OrderEvent(orderId)); // 订阅者 @Subscribe public void handleOrderEvent(OrderEvent event) {// 处理事件 }
💎 总结
Guava 的核心价值在于:
- 填补 JDK 空白:提供
Multimap等 JDK 缺失的集合类型 - 工程最佳实践:不可变集合/空安全设计等 Google 生产级方案
- 性能优化:缓存/集合工具等高性能实现
- 代码简洁:减少如
Map<K, List<V>>的模板代码
官方建议优先使用:
// 替代 Collections.unmodifiableList()
ImmutableList.copyOf(mutableList); // 替代 Map<K, List<V>>
Multimap<Integer, String> multimap = ArrayListMultimap.create();
在 IntelliJ IDEA 中使用 Guava API & Gradle 依赖配置 & Guava 集合类型详解
一、在 IntelliJ IDEA 中使用 Guava API
步骤流程:
-
创建/打开项目
通过菜单File → New → Project创建新项目(选择 Gradle