栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

HashSet源码解读

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

HashSet源码解读

关键属性
// hashset底层实际就是维护了一个hashmap    
private transient HashMap map;

// 对象关联的虚拟值 简单来说 就是所有key的value值
private static final Object PRESENT = new Object();
关键方法 构造方法:

这三个构造方法实际就是调用了hashmap的构造方法

 add方法

 

hashset的add方法实际上就是调用了hashmap的put方法,key使我们要添加到set集合中的值对象,value是初始化的一个object对象 

remove方法 

 

 也是调用的hashmap的remove方法,hashmap的remove方法会返回被删除的对象 

这里通过返回值是否与add添加的对象相等来判断是否删除成功

取值

这里有人可能会问为什么hashset没有get方法来获取值 这个问题刚开始也困扰了一下我 hashmap与hashset的区别是什么 

hashmap是put(key,value)的键值对类型的数据,key和value对我们讲都是有意义的

haset是add(value) 它只有一个入参,通过源码咱们可以看出 hashset实际上就是给hashmap的value设置成了同一个值 我们要存的数据实际上是存在了hashmap的key这个位置  hashmap提供的get方法是通过key来获取value 这个value才是我们需要的数据 

但是通过hashset存进map里面的数据实际上是这个key hashmap也没有通过get来获取key的方法,而是通过迭代器来实现获取key的 这也是为什么haset没有通过get来获取值的原因吧

所以我们只能通过循环或者迭代器来获取里面的值

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/462521.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号