—— 目录 ——
0. 导入依赖包
<!-- guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1.1-jre</version>
</dependency>
1. 新集合类型
Guava 中包含了多种新的集合类型,包括了:
- Multiset:新增了元素计数,元素去重,批量添加与删除元素等特性
- SortedMultiset:新增获取子集特性
- Multimap:新增将一个键映射到多个值的特性
- BiMap:新增键值对的双向映射特性
- Table:新增两个 key(相当于坐标)确定一个 value的特性
- ClassToInstanceMap:新增从类型到对象的映射的特性
① Mutiset
@Test
public void MultisetTest() {
// 通过 create 方法创建,使用 add 添加元素
Multiset<String> set = HashMultiset.create();
set.add("ice");
set.add("len");
set.add("rin");
set.add("ice");
// 也可以通过引入其他集合一次性添加
List<String> list = new ArrayList<>();
list.add("rex");
list.add("ice");
list.add("len");
list.add("alsie");
set.addAll(list);
// 特性 1 :计算某个元素的数量
System.out.println("【1】ice 的数量:" + set.count("ice"));
// 特性 2 :去除重复元素(返回值是一个新的 Multiset 可以接收)
System.out.println("【2】不重复元素:" + set.elementSet());
// 特性 3 :批量处理元素
System.out.println("【3】" + set);
// 设置 ice 的数量为 2(ice 从 3 变成了 2)
set.setCount("ice", 2);
// 设置 fire 为 5
set.setCount("fire", 5);
System.out.println("【4】" + set);
// 将 ice 的数量增加 4
set.add("ice", 4);
// 将 fire 的数量减少 2
set.remove("fire", 2);
System.out.println("【5】" + set);
// 要移除的大于拥有的,视为全部移除
set.remove("fire", 5);
System.out.println("【6】" + set);
}
【1】ice 的数量:3
【2】不重复元素:[len, rex, rin, ice, alsie]
【3】[len x 2, rex, rin, ice x 3, alsie]
【4】[len x 2, rex, rin, fire x 5, ice x 2, alsie]
【5】[len x 2, rex, rin, fire x 3, ice x 6, alsie]
【6】[len x 2, rex, rin, ice x 6, alsie]
② SortedMultiset
@Test
public void SortedMultiset() {
// 添加元素时,自动按元素名称排序(默认升序)(不是按数量排序的哦)
SortedMultiset<String> sort = TreeMultiset