跟着 Guava 学 Java 之 集合工具类

本文深入探讨Guava集合工具类,包括静态构造器、Iterables、Lists、Sets的各种操作,如交集、并集、差集、笛卡儿积等,并对比JDK的相似功能。此外,还介绍了Maps的独特方法如uniqueIndex和difference,以及MultiSets和Multimaps的实用工具。学习Guava能提升Java集合操作的效率和代码可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

先来回顾一下 JDK 的 Collectionsjava.util.Collections 提供了一系列静态方法,能更方便地操作各种集合。

比如:

  • 创建空集合 Collections.emptyList();
  • 创建单元素集合 Collections.singletonList("apple");
  • 排序 Collections.sort(list);
  • 创建不可变集合 Collections.unmodifiableList(mutable);
  • 创建线程安全集合 Collections.synchronizedList(list);
  • ......

Guava 沿着 Collections 的思路 提供了 更多的工具方法,适用于所有集合的静态方法,使之成为更强大的集合工具类。

Guava 提供的集合工具不止是对 Collections 的扩展和增强,还包括了其他集合类型的工具类,我们把工具类与特定集合接口的对应关系归纳如下:

Interface JDK or Guava? 对应 Guava 工具类
Collection JDK Collections2
List JDK Lists
Set JDK Sets
SortedSet JDK Sets
Map JDK Maps
SortedMap JDK Maps
Queue JDK Queues
Multiset Guava Multisets
Multimap Guava Multimaps
BiMap Guava Maps
Table Guava Tables

静态构造器

在 JDK 7 之前,构造新的范型集合时要讨厌地重复声明范型:

List<TypeThatsTooLongForItsOwnGood> list = new ArrayList<TypeThatsTooLongForItsOwnGood>();

JDK 7 以后因为有了钻石操作符(Diamond Operator)可以自动推断参数类型,所以省点儿事儿

List<TypeThatsTooLongForItsOwnGood> list = new ArrayList<>();

用 Guava 可以这样写:

List<TypeThatsTooLongForItsOwnGood> list = Lists.newArrayList();

你可能觉得:这没什么牛的呀,跟 JDK7 以后没啥区别呀,人家还是原生的。

是的,没错,尤其是你用 JDK 9 以后的版本,JDK 从功能上跟 Guava 就基本一样了,举个例子,比如带元素初始化:

List<String> theseElements = Lists.newArrayList("alpha""beta""gamma");

上面这行是利用了 Guava 的 Lists ,JDK 7 没有比这行代码更好的方法,但 JDK9 人家有,比如:

List<String> theseElements2 = List.of("alpha""beta"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值