没有合适的资源?快使用搜索试试~ 我知道了~
HashSet详解和使用示例_动力节点Java学院整理
需积分: 14 5 下载量 31 浏览量
2017-10-25
16:45:12
上传
评论
收藏 251KB DOC 举报
温馨提示
试读
11页
HashSet 是一个没有重复元素的集合。 它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素。 HashSet是非同步的。如果多个线程同时访问一个哈希 set,而其中至少一个线程修改了该 set,那么它必须 保持外部同步。
资源推荐
资源详情
资源评论
详解和使用示例动力节点 学院整理
第 部 分 介 绍
HashSet 简介
是一个没有重复元素的集合。
它是由 实现的,不保证元素的顺序,而且 HashSet 允许使用 null 元素。
是非同步的。如果多个线程同时访问一个哈希 ,而其中至少一个线程修改了该 ,那么它必须 保持外部同
步。这通常是通过对自然封装该 的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用
方法来“包装” 。最好在创建时完成这一操作,以防止对该 进行意外的不同步访问:
通过 返回的迭代器是 fail-fast 的。
HashSet 的构造函数
默认构造函数
!"
带集合的构造函数
!"#$%&'
指定 初始容量和加载因子的构造函数
!"()*
指定 初始容量的构造函数
!"
指定 初始容量和加载因子的构造函数(!++ 没有任何作用
()*("!++
HashSet 的主要 API
1 / 11
"&",
-",
"-",",
"&+
.#&'
"+-",",
第 / 部 分 数 据 结 构
的继承关系如下:
,0-",
1,!2"#&'
1,!2"#&'
1,!#&'
!"#&'
%2"#&'
++#&'("(,"34
与 关系如下图:
从图中可以看出:
5 继承于
2",并且实
现了 接口。
5/ 的本质
是一个6没有重复元
素6的集合,它是通过
实现的。
中含有一
个6 类型的成
2 / 11
员变量6+, 的操作函数,实际上都是通过 + 实现的。
第 7 部 分 源 码 解 析 基 于 8 9 : 5 ; <
为了更了解 的原理,下面对 源码代码作出分析。
=0,!
/
7!"#&'
;%2"#&'
<++#&'("(,"
:3
>?0@A.8B<5/;>;;;5:>77/:>:C
D
E 是通过 + 对象保存内容的
5#&(-",'+
/ FG&&HI 是向 + 中插入 =B! 对应的 !
7 因为 中只需要用到 =,而 是 =B! 键值对;
; 所以,向 + 中添加键值对时,键值对的值固定是 FG&&HI
<?-",FG&&HI-",
:
> 默认构造函数
D!"3
E 调用 的默认构造函数,创建 +
/5+#&(-",'
/4
//
/7 带集合的构造函数
/;!"#$%&'3
/< 创建 +。
/: 为什么要调用 +% ><JK(:,从 ><JK和 :中选择一个比较大的
树呢?
/> 首先,说明 ><JK
/D 因为从 的效率时间成本和空间成本考虑, 的加载因子是 5><。
/E 当 的“阈值”阈值 总的大小L加载因子#M 实际大小”时,
75 就需要将 的容量翻倍。
3 / 11
剩余10页未读,继续阅读
资源评论
牛仔码农@
- 粉丝: 205
- 资源: 122
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功