当前位置: 首页 > 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.lryc.cn/news/579382.html

相关文章:

  • 【python】OOP:Object-Oriented Programming
  • Linux基本命令篇 —— tar命令
  • Redis缓存架构实战
  • 微算法科技(NASDAQ MLGO)基于量子图像处理的边缘检测算法:开拓图像分析新视野
  • 中国户外品牌全球竞争力榜单发布:科技突围与文化赋能重塑行业格局
  • 扫地机产品--电池是否存在类似充电宝自燃问题?
  • 【JS笔记】JS 和 noodjs 的常见操作(十)
  • 依赖属性附加属性
  • 从混沌到澄明,AI如何重构我们的决策地图与未来图景
  • CSS `@scope` 实战指南:开启局部样式隔离新时代
  • NVIDIA Spectrum-3 SN4000 系列SN4000 SN4000 系列速度高达 400Gb/秒的现代横向扩展分布式数据中心应用提供支持。
  • React 学习(3)
  • http、SSL、TLS、https、证书
  • KMP(Kotlin Multiplatform)改造(Android/iOS)老项目
  • java8 Collectors.mapping 使用 例子 学习
  • 学习开发之数组和集合的相似与不同
  • Boss:玩家摄像机系统
  • Python干涉仿真
  • 快速搭建大模型web对话环境指南(open-webUI)
  • 12. grafana-Dashboard的Variable(过滤)使用
  • vbox 虚拟共享文件夹 创建以及权限问题
  • 多模态AI Agent技术栈解析:视觉-语言-决策融合的算法原理与实践
  • [特殊字符] 从图片自动生成 Excel:Python 批量 OCR 表格识别实战
  • 高压电缆护层安全的智能防线:TLKS-PLGD 监控设备深度解析
  • Redis 消息的发布和订阅
  • C++11 shared_ptr 原理与详细教程
  • 算法分析的系统性总结
  • FFmpeg开发笔记(七十七)Android的开源音视频剪辑框架RxFFmpeg
  • Python 物联网(IoT)与边缘计算开发实战(1)
  • 基于多线程实现链表快排