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

江苏伟业建设集团网站网站开发的发展的前景

江苏伟业建设集团网站,网站开发的发展的前景,semseo是什么意思,做网页初学者教程前言 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.pierceye.com/news/899099/

相关文章:

  • 西安烽盈网站建设郑州营销网站托管
  • 诸几建设银行网站怎么维护好网站
  • 深圳市国外网站建设简单html5网页设计
  • 网站制作公司西南城乡建设部网站首页
  • 网站名和域名能一样吗企业网站建设硬件
  • 德州做网站公司怎么开网店淘宝
  • 苏州做网站优化的电商定制开发
  • 广西庆海建设发展有限公司网站昆山有做网站的公司吗
  • 前端课程网站wordpress 微博登陆
  • asp怎么做网站适配开发公司安置房项目工程推进大会
  • 学做网站可以赚钱吗怎么批量修改wordpress文章内容
  • 写作网站vir上海博大园林建设发展有限公司网站
  • wordpress video gallery网站代码优化怎么做
  • 厦门网站设计品牌企业互联网门户网站建设
  • 做名片模板网站中文响应式网站
  • 用tornado做网站石家庄 外贸网站建设公司
  • 档案网站建设网页wordpress keyshot
  • 鞍山制作网站哪家好建设银行员工网站
  • 手机怎么提升网站流量品牌型网站成功案例图片
  • 网站视频主持人制作网站开发 质量管理
  • 网站的外链建设计划石家庄市城乡建设部网站
  • 电子商务网站规划与建设论文电子商务营销方法
  • 宁波做网站费用电子商城开发网站开发
  • 太原市住房和城乡建设部网站免费的logo在线设计
  • 做it的在哪个网站找工作wordpress 幻燈片 插件
  • 湘潭做网站 i磐石网络博学网站建设公司
  • 揭阳市建设发展总公司网站自己做的视频网站如何赚钱
  • 泉州自助建站软件天眼查在线查询官网
  • 网站建设书模板校本教研网站建设方案
  • 经销商自己做网站合适吗彩虹网站建设