Java——初始guava(1)
基于 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
,TreeMultiset
Multimap
一键对应多个值(替代 Map<K, List<V>>
)ArrayListMultimap
,HashMultimap
BiMap
键值双向唯一映射( inverse()
反转)HashBiMap
,ImmutableBiMap
Table
二维表结构(行+列作为键) 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