说说 Google Guava 集合

时间:2021-7-4 作者:qvyue

Guava 工程是被 Google 的 Java 项目广泛依赖的核心库。

谷歌从日常的工作中提取出了很多高效率的 API 方法,从而诞生了 guava 工具包。

guava 的优点是:

  1. 高效设计良好的 API ;
  2. 遵循高效的 java 语法实践;
  3. 代码更简洁,节省时间与资源,提高开发生产力。

guava 的意思是番石榴。

说说 Google Guava 集合
说说 Google Guava 集合

Guava 包提供了很多特性,这次我们主要讲讲集合。

1 初始化

利用 Guava 的静态工厂方法,可以更简洁地初始化集合中的元素。

JDK 方式:

说说 Google Guava 集合

Guava 方式:

说说 Google Guava 集合

2 Bimap

Bimap 是一个映射,可以通过 key 得到 value ,也可以通过 value 得到 key 。

说说 Google Guava 集合

Java 集合类库中的 Map ,键( Key )是唯一的,而值( Value )可以不唯一 。而 bimap 要求 key 和 value 都唯一,如果 key 不唯一则覆盖 key ,如果 value 不唯一则抛异常。

说说 Google Guava 集合

3 Multiset

Set 的特性可以分为两种:是否有序和是否允许重复。根据这两个特性可以画出一个四象限图。可以看出,Multiset 填补了无序+允许重复这一区域的空白。

说说 Google Guava 集合

Multiset 提供了很多集合方面的实现与操作。

说说 Google Guava 集合

HashMultiset: 元素存放于HashMap;
LinkedHashMultiset: 元素存放于 LinkedHashMap ,即元素的排列顺序由第一次放入的顺序决定;
TreeMultiset: 元素被排序存放于 TreeMap;
EnumMultiset: 元素必须是 enum 类型;
ImmutableMultiset: 不可修改的 Mutiset。

普通集合操作类似于我们在大学时曾经学过的集合计算。

说说 Google Guava 集合

比较特别的是,部分合并操作。

说说 Google Guava 集合

可以看到,如果 A U B,只是把集合 A 所没有的元素合并过来。在左边的元素是主导这次合并规则的元素。

4 Multimap

Multimap 中,一个 key ,可以对应多个值。形如: Map> 这样的数据结构。

假设有一组单词,我们可以使用 Multimap 来把这些单词依据长度分组:

说说 Google Guava 集合

输出:

说说 Google Guava 集合

代码步骤说明:

  1. 首先使用流式编程,初始化单词组;
  2. 利用函数式编程,定义分组规则,这里依据单词长度进行分组;
  3. 利用 Multimaps.index() 方法执行分组。

利用 Multimap ,我们还可以实现映射反转:

说说 Google Guava 集合

输出:

说说 Google Guava 集合
说说 Google Guava 集合
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。