hashSet内部是利用hashMap实现的,将值存在hashmap的key上这也是为什么hashset不允许存取重复值得原因。

数据结构

    private transient HashMap<E,Object> map;    // 与支持映射中的对象关联的虚拟值 ,map中的value,只是一个无意义的空对象private static final Object PRESENT = new Object();

默认的构造函数

    public HashSet() {map = new HashMap<>();}

查询内容的时候实际是在map中查询key

    public boolean contains(Object o) {return map.containsKey(o);}

增加的时候,在key的位置放置要存的值,在value中放置一个没有意义的空对象

    public boolean add(E e) {return map.put(e, PRESENT)==null;}

HashSet源码分析 1相关推荐

  1. 【Java源码分析】LinkedHashSet和HashSet源码分析

    类的定义 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, ...

  2. HashSet源码分析

    HashSet底层是HashMap实现的,关于HashMap的分析请移步到HashMap源码分析 属性 //底层使用HashMap来实现 private transient HashMap<E, ...

  3. java ee是什么_死磕 java集合之HashSet源码分析

    问题 (1)集合(Collection)和集合(Set)有什么区别? (2)HashSet怎么保证添加元素不重复? (3)HashSet是否允许null元素? (4)HashSet是有序的吗? (5) ...

  4. 【Java入门提高篇】Day26 Java容器类详解(八)HashSet源码分析

    前面花了好几篇的篇幅把HashMap里里外外说了个遍,大家可能对于源码分析篇已经讳莫如深了.别慌别慌,这一篇来说说集合框架里最偷懒的一个家伙--HashSet,为什么说它是最偷懒的呢,先留个悬念,看完 ...

  5. HashSet源码分析:JDK源码系列

    1.简介 继续分析源码,上一篇文章把HashMap的分析完毕.本文开始分析HashSet简单的介绍一下. HashSet是一个无重复元素集合,内部使用HashMap实现,所以HashMap的特征耶继承 ...

  6. HashSet源码分析 jdk1.6

    Set的特点:Set元素无顺序,且元素不可以重复. 1.定义 public class HashSet<E> extends AbstractSet<E> implements ...

  7. Java集合之HashSet源码分析

    概述 HashSet是基于HashMap来实现的, 底层采用HashMap的key来保存数据, 借此实现元素不重复, 因此HashSet的实现比较简单, 基本上的都是直接调用底层HashMap的相关方 ...

  8. JAVA集合专题+源码分析

    文章目录 Java集合专题 集合和数组的区别 数组 集合 区别 集合体系结构介绍 单列集合 [Collection ] Collection接口 迭代器 迭代器原理 增强for循环 List接口 对集 ...

  9. Java学习集合源码分析

    集合源码分析 1.集合存在的原因 可以用数组来表示集合,那为什么还需要集合? 1)数组的缺陷 ​ 在创建数组时,必须指定长度,一旦指定便不能改变 数组保存必须是同一个类型的数据 数组的增加和删除不方便 ...

最新文章

  1. aide怎么打开html文件,求助!aide获取网页html源码
  2. 网络推广——网络推广专员如何分析网站关键词排名波动影响因素
  3. 在 echarts关系图动态线上添加文字_多折线堆叠图如何制作?
  4. 根据字符串选择类并完成类的初始化--方法一
  5. C++设计模式--工厂方法模式
  6. 由浅到浅入门批量渲染(三)
  7. sql连接远程服务器索引超出了_手机怎么连接服务器远程桌面?RD client远程桌面使用教程...
  8. 终端mysql Operation not permitted错误解决方案
  9. LeetCode 240. 搜索二维矩阵 II(二分查找 分治)
  10. Python程序从给定的N个数字中找到最大倍数
  11. CSS可见区域全局居中
  12. vue中的 $children 和 $parent
  13. 国外英文版云购夺宝网站项目开发制作代码解析
  14. LTE时代的定位技术:OTDOA,LPP,SUPL2.0
  15. MintUI(详见官方文档)
  16. glide 设置宽高_Android之ImageView加载图片保持宽高比
  17. 腾讯短视频SDK代码层面上录制功能的实现,短视频APP开发第一步
  18. 计算机回收站概念,22.5.1 回收站概念
  19. Because we are OIer
  20. 一个大二渣渣准程序员的感动

热门文章

  1. 华为手机崩溃后自动重启
  2. java中if条件格式_Java 设置Excel条件格式示例代码(高亮条件值、应用
  3. 蒂特ft232_USB转串口_FT232-CH340-PL2303的简单辨析
  4. 浪潮英信服务器np5020m 系统安装,浪潮英信服务器NP3020M2新品拆解评测!
  5. 九宫疑难(八数码)求解过程动态演示
  6. multisim收敛助手有啥用_登记注册小助手“减肥”了……
  7. RabbitMq实战——外卖派单通过补单系统实现分布式事务
  8. 多微源储能系统调频控制matlab/simulink模型
  9. MarkDown表格以及文字对齐设置
  10. 美国卡尔马计算机公司,卡尔玛于美国堪萨斯州举办Ottawa工厂扩建奠基仪式