HashSet集合
它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不一致)。
HashSet 是根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能。保证元素唯一性的方式依赖于: hashCode() 与 equals ()方法。
方法 | 说明 |
---|---|
add((Object obj) | 向Set集合中添加元素,添加成功返回true,否则返回false |
remove(Object obj) | 删除Set集合中的元素,删除成功返回true,否则返回false。 |
contains(Object o) | 如果Set包含指定的元素,则返回 true,否则返回false |
clear() | 移除此Set中的所有元素 |
size() | 返回Set集合中的元素个数 |
isEmpty() | 如果Set不包含元素,则返回 true ,否则返回false |
iterator() | 返回在此Set中的元素上进行迭代的迭代器 |
HashSet集合的特点
-
底层数据结构是哈希表
-
对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
-
没有带索引的方法,所以不能使用普通for循环遍历
-
由于是Set集合,所以是不包含重复元素的集合
HashSet集合保证元素唯一性分析
-
HashSet集合保证元素唯一性的原理
1.根据对象的哈希值计算存储位置
如果当前位置没有元素则直接存入
如果当前位置有元素存在,则进入第二步
2.当前元素的元素和已经存在的元素比较哈希值
如果哈希值不同,则将当前元素进行存储
如果哈希值相同,则进入第三步
3.通过equals()方法比较两个元素的内容
如果内容不相同,则将当前元素进行存储
如果内容相同,则不存储当前元素
-
HashSet集合保证元素唯一性的图解