Java——初始guava(1)

发布于:2025-07-04 ⋅ 阅读:(16) ⋅ 点赞:(0)

基于 Google Guava 官方教程的解答

📚 Guava 提供了哪些 JDK 不具备的 API?

Guava 扩展了 JDK 的集合框架,提供了多种 JDK 没有的实用 API:

  1. 不可变集合(Immutable Collections)

    • ImmutableListImmutableSetImmutableMap
    • 特性:创建后不可修改,线程安全,性能优于 Collections.unmodifiableXXX()
    // 创建方式
    ImmutableList<String> list = ImmutableList.of("A", "B", "C");
    ImmutableMap<String, Integer> map = ImmutableMap.of("k1", 1, "k2", 2);
    
  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"); // 一键多值
    
  3. 缓存工具

    • CacheBuilder:构建高性能本地缓存(支持过期策略、弱引用等)
    Cache<String, Data> cache = CacheBuilder.newBuilder()
        .maximumSize(1000)
        .expireAfterWrite(10, TimeUnit.MINUTES)
        .build();
    
  4. 函数式工具

    • Function/Predicate 接口 + Collections2.transform/filter
    List<String> upper = Lists.transform(list, String::toUpperCase);
    
  5. 字符串处理

    • Joiner:安全连接字符串(自动处理 null)
    • Splitter:灵活分割字符串
    String joined = Joiner.on("|").skipNulls().join("A", null, "B"); // "A|B"
    
  6. 原生类型增强

    • 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 的核心价值在于:

  1. 填补 JDK 空白:提供 Multimap 等 JDK 缺失的集合类型
  2. 工程最佳实践:不可变集合/空安全设计等 Google 生产级方案
  3. 性能优化:缓存/集合工具等高性能实现
  4. 代码简洁:减少如 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

步骤流程:
  1. 创建/打开项目
    通过菜单 File → New → Project


网站公告

今日签到

点亮在社区的每一天
去签到