集合二

Set集合:
HashSet:无序,不可重复
1.底层实际上是一个HashMap,HashMap底层采用了哈希表的数据结构。
2.哈希表又叫散列表,哈希表底层是一个数组,这个数组中的每一个元素又是一个单向链表,每个单向链表都有一个独一无二的hash值,代表数组的下标,在某个单向链表中的每个节点上的hash值是相等的,hash值实际上是key调用hashCode方法,在通过“hash function”转换成的值。
哈希表的简单结构图如下:
这里写图片描述
3.如何向哈希表中添加元素?
答:根据key的hashCode方法,经过某个算法得出hash值,如果这个哈希表中不存在这个hash值,则直接加入元素中。如果该hash值已经存在,继续调用key之间的equals方法,如果equals方法返回false,则将该元素添加到该单向链表中,如果equals方法返回的是true,则放弃添加该元素。
4.hashSet其实是hashMap中的key部分,hashSet有什么特点,hashMap中的key应该具有相同的特点。
5.hashSet和hashMap初始化容量都是16,默认加载因子是0.75。
6.存储在hashSet集合或者hashMap集合key部分的元素需要同时重写hashCode和equals方法。(在hashSet中添加元素是,先调用hashCode方法,看hash值是否一致,若一致调用equals方法看对象是否相同,不同则添加)。
7.如何从哈希表中取得元素?
答:根据key算出hash值,找到对应数组中的元素,在用key和该元素中的单向链表中的节点一次遍历,找到value。
8.哈希表的增删和查询效率都是较高的。(根据以上3和7)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值