当前位置: 首页 > 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.zqtcl.cn/news/899099/

相关文章:

  • 古典网站源码海南app开发
  • 自己做网站前期困难吗怎么早网站上放广告
  • 建设银行招标网站南昌网站建设公司信息
  • 网站建设与管理专业介绍湖南长沙邮政编码
  • 社区论坛系统免费开源seo网站诊断报告
  • 网站LOGO透明底色PNG格式怎么做的开发一款游戏需要多少资金
  • 网站推广营销策略北京东直门网站建设
  • 制作公司网站需要购买域名和服务器吗聊城做企业网站
  • 大连网站建设价格低做校招的网站有哪些
  • 电脑端网站和手机网站区别做的好的营销型网站有哪些内容
  • 长沙市做网站网站建设 全是乱码
  • ps做网站原形系统学做网站
  • 接网站 建设wordpress 打开慢 google
  • wordpress 移动 建站网站前台如何做访问量显示
  • 公司做网站买域名之后做什么打鱼网站开发
  • 南京市城乡建设局网站二级建造师证件查询
  • 百度关键词优化系统网站优化师招聘
  • 网站方案建设书推广产品的软文怎么写
  • 网站栏目按扭邢台手机网站建设地方
  • 青浦赵巷网站建设做网站需要编程吗
  • 公司logo设计含义株洲seo
  • 公司制作网站做论坛网站怎么赚钱吗
  • 深圳 外贸 网站建设 龙医院网站建设价格
  • 网上建网站驰易网站建设
  • 建设工程招标专业网站网站联盟广告
  • 自建站英文公司网站制作银川
  • 顺德网站建设公司信息全网推广软件
  • 网站全屏视频怎么做电子商务网站规划的原则是什么
  • 网站建设行业发展史做网站主页上主要放哪些内容
  • 成都成华网站建设小程序开发网上商城