集合
集合

- set的带有hash的都是由对应的map来实现的
- 如
- hashSet -> hashMap
- linkedHashSet -> linkedHashMap
通用集合考虑方向
- 该容器的特点,实现了什么接口
- 线程安全
- 效率
- 底层数据结构
- 扩容机制
- 如果是同一个类型的容器,考虑一下各自的实现算法,
一个可重复,自排序的容器
谷歌的multiSet接口
常用于统计某个东西出现的此处,底层依赖于hashmap实现
// 需要引入 Guava 库
import com.google.common.collect.HashMultiset;
import com.google.common.collect.Multiset;
// ...
List<String> words = Arrays.asList("apple", "banana", "apple", "orange", "banana", "apple");
Multiset<String> wordBag = HashMultiset.create();
wordBag.addAll(words); // 直接把所有单词扔进“袋子”
System.out.println(wordBag); // 输出: [orange, banana x 2, apple x 3]
- 实现hashMultiSet,multiset的实现类,无需
比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
- 线程不同步,都是线程不安全的
- 数据结构
- hashSet
- 基于hashMap,里面是无序的,唯一的
- LinkedHashSet
- 基于LinkedHashMap,唯一,但是会按照FIFO进行数据的存储和取出
- TreeSet
- 基于红黑树,会按照自然顺序或者自定义排序进行自动排序
- hashSet
- 使用场景
- 唯一无序,hashSet
- FIFO,LinkedHashSet
- 自排序,大量插入删除,TreeSet
更新: 2025-08-29 13:56:05
原文: https://www.yuque.com/duifangzhengzaishuru-rqbua/axyc58/kk45l754m17e89rg