HashSet:
1.哈希表的结构和特点
结构:结构有多种
主结构:顺序表
每个顺序表的节点再单独引出一个链表
特点:快
2.哈希表是如何添加数据的
1.计算哈希码(调用哈市Code()),结果是一个int值,整数的哈希码取自身即 可)
2.计算在哈希表中的存储位置 y=k(x)=x%11 x:哈希码 k(x):函数 y:在哈希 表中的存储位置
3.存入哈希表
情况1::一次添加成功
情况2:多次添加成功(出现了冲突,调用equals()和对应链表的元素进 行比较,比较到最后,结果都是false,创建新节点,存储数据, 并加入链表末尾)
情况3:不添加(出现了冲突,调用equals()和对应链表的元素进行比 较,经过一次或多次比较后,结果是true,表明重复,不添加)
结论1:哈希表添加数据快(3步即可,不考虑冲突)
结论2:唯一
结论3:无序
3.哈希表如何查询数据
和添加数据的过程相同
情况1:一次找到
情况2:多次找到
情况3:找不到
结论1:哈希表查询数据快
结论2:哈希表删除数据快
结论3:哈希表更新数据快
4.hashCode和equals作用
HashCode():计算哈希码,是一个整数,根据哈希码可以计算出数据在哈希 表中的存储位置。
equals():添加时出现了冲突,需要通过equals进行比较,判断是否相同
Map:
1.Map:是集合每个元素是两个对象,一个是key,一个是value 键值对
好处:根据key可以快速找到value
找到key特别快(就是哈希表的查询)
value和key在一起,已经打包Entry(key,value)
无序 唯一
2.如何遍历Map
不能直接遍历,必须先转换成Set再遍历
思路1:先得到所有的key,遍历key的过程中,根据key获取value
思路2::先得到所有的key-value组成的Set,然后遍历Set