HashSet那点事儿
在复习完 HashMap 后,今天学习 HashSet,在日常开发中我们常用它来存储不重复元素, HashSet 是基于 HashMap 的,它巧妙地利用了 HashMap 的 key 不可重复的特性,我们在向 HashSet 中添加元素时,实际上是把添加的元素当做 HashMap 的 key ,当有重复的元素进来时,表示 HashMap 中存在相同的 key,新的value 会覆盖原来的value ,理解了 HashMap 后 HashSet 就很容易理解了。
核心属性
1 | //HashSet 基于 HashMap 实现 |
构造方法
1 |
|
我们发现 HashSet 的构造方法都是创建了一个 HashMap
常用方法
add
1 | public boolean add(E e) { |
可以看到 HashSet 的添加方法其实就是把要添加的元素 e 当做 HashMap 的 key,而 value 都是 PRESENT,这样就实现了 HashSet 中的元素不重复。
其他的方法基本也是借助 HashMap 来实现的。
总结
HashSet 的实现非常简单,就是借助 HashMap的 key 不可重复来实现去重的,所以 HashSet 也不是线程安全的。
- Title: HashSet那点事儿
- Author: 薛定谔的汪
- Created at : 2018-07-20 18:01:54
- Updated at : 2023-11-17 19:37:37
- Link: https://www.zhengyk.cn/2018/07/20/java/HashSet/
- License: This work is licensed under CC BY-NC-SA 4.0.