当前位置: 首页 > news >正文

Java——初始guava(1)

基于 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

http://www.dtcms.com/a/266121.html

相关文章:

  • win11设置任务栏为顶部
  • 「Java流程控制」循环综合应用
  • Redis大Key问题
  • 【PyCharm 2025.1.2配置debug】
  • React Tailwind css 大前端考试、问卷响应式模板
  • Robot---能打羽毛球的机器人
  • Linux: perf report数据对比,python
  • Java的SpringAI+Deepseek大模型实战之会话记忆
  • MySQL 8.0 OCP 1Z0-908 题目解析(19)
  • 基于SpringBoot+Vue的电影售票系统(协同过滤算法)
  • 【数据安全】连续数据突升检测
  • 优化Facebook广告投放的五大关键策略
  • 全双工和半双工在以太网报文收发过程中的核心区别
  • AMD-R9-9950X 和 微星B850M-MORTAR-WIFI主板 简单开箱测评
  • [自然语言处理]汉语文本分词
  • Odoo 中国特色高级工作流审批模块研发
  • 页面登录数据的加密(前端+后端)
  • 使用pdf box去水印
  • 搜索选择DFS还是BFS
  • NumPy-核心函数transpose()深度解析
  • 【HarmonyOS】HAR和HSP循环依赖和依赖传递问题详解
  • 二叉树展开为链表C++
  • 20.数据同步Mysql-ES解决方案
  • 网络编程学习路线图
  • 如何配置core dump生成
  • Android App冷启动流程详解
  • webrtc-streamer视频流播放(rstp协议h264笔记)
  • 新人如何入门学习 STM32?
  • Stata如何做机器学习?——SHAP解释框架下的足球运动员价值驱动因素识别:基于H2O集成学习模型
  • Selenium 自动化测试中跳过机器人验证的完整指南:能用