当前位置: 首页 > news >正文

台东县网站建设_网站建设公司_HTML_seo优化

科讯网站发布文章,wordpress 4.9 中文,wordpress写书typecho主题,营销型网站建设发难前言 List、Set、HashMap作为Java中常用的集合#xff0c;需要深入认识其原理和特性。 本篇博客介绍常见的关于Java中Set集合的面试问题#xff0c;结合源码分析题目背后的知识点。 关于List的博客文章如下#xff1a; Java进阶#xff08;List#xff09;——面试时L… 前言 List、Set、HashMap作为Java中常用的集合需要深入认识其原理和特性。 本篇博客介绍常见的关于Java中Set集合的面试问题结合源码分析题目背后的知识点。 关于List的博客文章如下 Java进阶List——面试时List常见问题解读 结合源码分析 其他相关的Set的文章如下 Java学数据结构3——树Tree B树 红黑树 Java标准库中的集合Set与映射Map 使用多个映射Map的案例 目录 前言引出1. 描述一下HashSet的底层原理构造方法add方法 2. map.put方法静态常量PRESENT3. map.remove key方法PRESENT进行比较4. HashSet的去重原理5. 如何选择HashSet 或 TreeSet6. 如何得到一个线程安全的Set集合总结 引出 1.特点无序去重非线程安全 2.底层HashMap的Key值实现的 3.map.put方法静态常量PRESENT新值替换旧值 4.map.remove key方法如果KEY不存在时则返回的是null如果KEY存在时返回的就是e.value即PRESENT返回true成功返回false不成功 5.去重原理先判断hash值再通过或者equals判断整体如果返回true则为重复元素 6.无序的则采用HashSet 有序的则采用TreeSet 7.线程安全的setCollections.synchronizedSet(new HashSet()); 1. 描述一下HashSet的底层原理 HashSet的特点无序去重非线程安全HashSet 底层是用HashMap的Key值实现的也有上面的3大特征 构造方法 无参和代参构造方法都会初始化这个HashMap 无参的构造方法调用了HashMap方法 有参的构造方法也是调用了HashMap方法 ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上 add方法 add方法中可以看出调用HashMap的put方法key为放入元素值为常量PRESENT 2. map.put方法静态常量PRESENT 既然hashset基于hashmap实现你说一下 hashset的add方法中为什么要在map.put的val上放上一个Object类型的静态常量PRESENT HashSet底层调用了map的put方法传入了存储的对象和PRESENT常量那我们进入put方法继续查看 put方法内调用了putVal方法PRESENT常量为形参value继续进入查看 if (e ! null) { // existing mapping for key//把旧数据存储到oldValueV oldValue e.value;//如果说存储的位置上已经有元素了if (!onlyIfAbsent || oldValue null)//新元素会替代旧元素 新KEY替代KEYe.value value;afterNodeAccess(e);//返回旧元素数据return oldValue;}modCount;if (size threshold)resize();afterNodeInsertion(evict);//如果说上面的if结构没有执行那么就说明这个位置上没有元素则新增成功返回nullreturn null;public boolean add(E e) {//上面的方法返回值决定了HashSet的add方法到底返回true还是falsereturn map.put(e, PRESENT)null;}此方法内部明确箭头标处的原理value就是PRESENT如果进入这个if结构则说明这个位置上已经存在该key则会用value替换之前的旧值然后返回旧值oldValue否则会返回null;至此我们可以看出此方法的返回值是PRESENT或者是null如果为PRESENT则说明KEY已存在则add方法就会返回false此处元素put还是成功的只是新值替换旧值返回null则add返回true此KEY不存在代表存储新的KEY-VALUE; 3. map.remove key方法PRESENT进行比较 既然hashset基于hashmap实现你说一下 hashset的remove方法中为什么要在map.remove key 完了之后要和PRESENT进行一个等值比较呢 从HashMap的remove方法中可以看出方法返回的是e.value或者null与add方法中的原理一起联想则会明白如果KEY不存在时则返回的是null如果KEY存在时返回的就是e.value即PRESENT所以在HashSet在判断此返回值PRESENT如果相等则返回true说明此KEY是存在的删除成功返回true如果返回值是null那么nullPRESENT则返回的肯定是false那么代表此KEY不存在删除自然不成功返回false public V remove(Object key) {NodeK,V e;//判断了一下如果removeNode删除得到的是null说明此KEY不存在方法返回nullreturn (e removeNode(hash(key), key, null, false, true)) null ?//否则返回e.value 就是 PRESENTnull : e.value;}public boolean remove(Object o) {//因为HashMap删除成功返回的是PRESENT PRESENT 则结果为true 代表删除成功//否则返回的是null 返回false 删除失败return map.remove(o)PRESENT;}4. HashSet的去重原理 HashMap中putVal方法中有这么一段代码判断去重原理在于hashcode的判断和equals方法的判断先判断hash值再通过或者equals判断整体如果返回true则为重复元素 5. 如何选择HashSet 或 TreeSet 无序的则采用HashSet 有序的则采用TreeSet 6. 如何得到一个线程安全的Set集合 Set datas Collections.synchronizedSet(new HashSet()); 总结 1.特点无序去重非线程安全 2.底层HashMap的Key值实现的 3.map.put方法静态常量PRESENT新值替换旧值 4.map.remove key方法如果KEY不存在时则返回的是null如果KEY存在时返回的就是e.value即PRESENT返回true成功返回false不成功 5.去重原理先判断hash值再通过或者equals判断整体如果返回true则为重复元素 6.无序的则采用HashSet 有序的则采用TreeSet 7.线程安全的setCollections.synchronizedSet(new HashSet());
http://www.ihoyoo.com/news/70768.html

相关文章:

  • 关于网站开发与设计论文湛江企业网站
  • 网站建设开发费用怎样入账网络整合营销方案
  • 关于网站建设的题目前端网站开发的公用头部
  • 做网站挣钱吗wordpress+tag+数字
  • 网站建设赛车城市网站建设分析报告
  • 家庭网络建站h5页面制作工具app
  • 鹤壁做网站的网络公司上海网站开发技术最好公司
  • 怎么搭建免费网站广州 Wix网站开发
  • 国内手机网站建设网站超链接怎么做 word文档
  • 广州建站商城ide wordpress
  • 中介做网站的别打电话为网站吸引流量的方法
  • 商洛网站开发公司登录网站显示系统维护怎么做
  • ip138查询网站网址域名ip自己买空间让网络公司做网站好吗
  • 网站建设的基本流程和技术规范邯郸网站设计招聘
  • 下列关于网站开发中网站上传做网站的的步骤怎么写
  • 企业网站建设递进发展趋势宁波公司网站开发
  • 深圳专业网站建设企网页设计与制作课程内容
  • 西安建站网站怎么知道网站有没有备案
  • 很简单的做设计的网站企业免费网站建设模板下载
  • 英文网站做翻译接单网站建设时如何调用qq微信
  • 做网站还要什么认证吗中国重庆网站建设
  • 网站title 在哪里设置网站建设主要问题
  • asp漂亮的个人网站模板wordpress极简模版
  • 郑州区块链数字钱包网站开发公司网站开发基本过程
  • 优化网站关键词的技巧哪里有免费的网站模板下载软件
  • 来宾住房与城乡建设网站wordpress 按点击调用热门文章
  • 怎么使自己做的网站有音乐免费做ppt的网站有哪些
  • 佛山市新城开发建设有限公司网站一个公司网站开发多少钱
  • 加盟培训网站建设推广是做什么工作的
  • 树形结构网站案例网站的建设价格