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

微信小程序怎么做网页北京网站优化方法

微信小程序怎么做网页,北京网站优化方法,惠州网站制作策划,wordpress 4.5.7本人博客《HashMap、HashSet底层原理分析》,可以了解hashmap的底层源码实现 测试代码 HashSet底层实际就是一个Hashmap。猜猜下面源码每一个打印结果。 注:user对象重写的hashcode方法,保证name和age一样的情况下hashcode是一样的&#xff…

本人博客《HashMap、HashSet底层原理分析》,可以了解hashmap的底层源码实现

测试代码

HashSet底层实际就是一个Hashmap。猜猜下面源码每一个打印结果。
注:user对象重写的hashcode方法,保证name和age一样的情况下hashcode是一样的,

import java.util.*;public class HashmapTest {public static void main(String[] args) {HashMap map = new HashMap();User u1 = new User("AA");User u2 = new User("BB");map.put(u1,1);map.put(u2,2);System.out.println("结果一(put u1 u2  后)="+map);// u1 重新Set nameu1.setName("CC");System.out.println("结果二(u1 set name 后)="+map);// 移除 u1map.remove(u1);System.out.println("结果三(remove u1 后)="+map);// put user(CC)map.put(new User("CC"),3);System.out.println("结果四(put user(CC) 后)="+map);// put user(AA)map.put(new User("AA"),4);System.out.println("结果五(put user(AA) 后)="+map);}
}class User{private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public User(String name, int age) {this.name = name;this.age = age;}public User(String name) {this.name = name;}public User() {}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic int hashCode() {return Objects.hash(name, age);}
}

测试结果

结果一(put u1 u2  后)={User{name='BB', age=0}=2, User{name='AA', age=0}=1}
结果二(u1 set name 后)={User{name='BB', age=0}=2, User{name='CC', age=0}=1}
结果三(remove u1 后)={User{name='BB', age=0}=2, User{name='CC', age=0}=1}
结果四(put user(CC) 后)={User{name='BB', age=0}=2, User{name='CC', age=0}=3, User{name='CC', age=0}=1}
结果五(put user(AA) 后)={User{name='BB', age=0}=2, User{name='CC', age=0}=3, User{name='CC', age=0}=1, User{name='AA', age=0}=4}

分析

结果一和结果二属于Java基础

结果三分析

结论:并没有移除u1成功。

map.remove(u1);

1、了解put方法做了哪些事?
map.put(u1,1); 第一次put时,数组下标、Node节点中保存的hash均是通过new User(“AA”)计算并保存的
2、SetName后,该节点中保存了什么?
u1.setName(“CC”); SetName时,只改变了值,Node节点在数组中的位置、Node节点中保存的hash值均还是new User(“AA”)的
3、了解map是怎么实现remove?

  • remove和put是类似的,通过remove传入的对象,经过计算下标,然后和该下标内的数据进行比对(hash值相等 且 (== 或 equals))。

  • 原Node在数组中下标、Node内hash值均保存的是new User(“AA”),但是remove传入的却是CC,就算下标一样,hash值肯定是不一样的,所以并不会移除u1对象

结果四分析

结论:成功put。

map.put(new User("CC"),3);

1、通过结果三分析已经知道put时做了那些事,就算Hash计算的下标一样,hash值和目前存在的数据肯定是不一样的,所以是可以正常加入的。
2、假设计算后下标一致,u1 节点保存的hash值是AA的,结果四put的是CC的hash,所以肯定不一样,此时是可以正常加入的

结果五分析

结论:成功put。

map.put(new User("AA"),4);

1、通过结果三分析已经知道remove时做了那些事,实际put也一样,hash冲突(下标相等)时,hash值相等 且 (== 或 equals)时才会认为是相等的
2、此时put进去的new User(“AA”)和原保存进去的u1,两者hash冲突(因为user对象重新了hashcode方法,hashcode是一样的,计算后的下标是一样的),hash值也相等(都是AA的),但是u1实际保存的Name是CC,不论是==还是equals均返回的是false,所以也是可以正常put进去的

http://www.yayakq.cn/news/146104/

相关文章:

  • 制作系部网站首页莆田百度seo公司
  • 如何制作淘宝客网站wordpress 一键分享
  • dedecms 生成网站地图快递建站收费标准
  • seo案例网站网站改版 方案
  • 昆山制造网站的地方免费移动版wordpress
  • 包头网站 建设海南最新消息新闻
  • 网站开发石家庄个人网站做cpa
  • 制作网站要多少钱网页制作外包
  • 金华专业做网站公司wordpress搬家后需要重新安装
  • 西安企业模板网站建设国内做外贸的平台有哪些
  • 公司企业如何做网站织梦网站建设案例
  • 贵州城市和城乡建设官方网站微信官网登陆
  • wordpress如何获取会员字段简述网站内容如何优化
  • 做公众号可以看的网站可以直接用php做网站吗
  • ps制作个人网站首页子域名网址查询
  • ppt做书模板下载网站有哪些内容郑州网站建设开发
  • 网站开发所需能力东莞寮步搬家公司
  • 网站推广应该怎么做树品短视频营销拓客平台
  • 中小型企业查询网站wordpress 页码显示
  • 安徽省建设工程安全协会网站开发网站需要注意
  • 上海医疗网站备案表wordpress怎么修改首页
  • 郑州经纬网络做网站吗急招一对夫妻门卫6500元
  • 制作一个专门浏览图片的网站网站是陕西省城乡建设综合服务中心
  • 淘宝客网站建设任务柳州 网站推广
  • 网站企业建设开发一个手机app多少钱
  • 网站设计厂站长工具pr值查询
  • 网站设计是用什么软件做可信网站认证必须做吗
  • 莞城区做网站wordpress打开速度分析
  • 网站开发兼职wordpress ip改域名
  • 用php做网站需要什么软件株洲有实力关键词优化服务