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

100简单大气的科技公司名字网站做seo推广 s

100简单大气的科技公司名字,网站做seo推广 s,dw做了网站还可以做淘宝详情吗,高唐网站开发在回答这个问题之前我们先要了解equals与hascode方法的本质是做什么的 1. equals方法 public boolean equals(Object obj) {return (this obj);}我们可以看到equals在不重写的情况下是使用判断地址值是否相同 所以默认的 equals 的逻辑就是判断的双方是否引用了一个对象&am…

在回答这个问题之前我们先要了解equals与hascode方法的本质是做什么的

1. equals方法

public boolean equals(Object obj) {return (this == obj);}

我们可以看到equals在不重写的情况下是使用==判断地址值是否相同

所以默认的 equals 的逻辑就是判断的双方是否引用了一个对象,如果是那就是相等的,如果不是那就不相等。

默认的 equals 看似能满足我们的要求,但有些情况下却不能。在开发过程中,我们更希望比较的是两个对象的内容是否相等

package com.Month08.Day_02;import java.util.Objects;public class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public Person() {}
}
package com.Month08.Day_02;import java.util.stream.Stream;public class Test {public static void main(String[] args) {Person a = new Person("a",4);Person b = new Person("a", 4);System.out.println(a.equals(b));}
}

在这里插入图片描述

可以看到在这里我们传入相同的值的情况下得到的结果却是false

2. HashCode

简而言之hashcode是通过将内部存储地址映射成一个整型值,这个整型值就是hashcode

默认情况下,hashCode()方法返回的是对象的内存地址的哈希码表示。

public int hashCode() {int h = hash;if (h == 0 && !hashIsZero) {h = isLatin1() ? StringLatin1.hashCode(value): StringUTF16.hashCode(value);if (h == 0) {hashIsZero = true;} else {hash = h;}}return h;}

3. 什么是散列表

在Java中,散列表(Hash Table)是一种非常重要的数据结构,它通过哈希函数(Hash Function)将输入(通常是键Key)映射到表中一个位置来访问记录,以加快查找的速度。散列表通常是以数组的形式实现的,但不同于普通的数组,散列表中的每个槽位(slot)并不直接存储数据,而是存储数据的索引(或称为指针),这个索引指向实际存储数据的位置。这种设计使得数据的查找、插入和删除操作都非常快

  • HashMap:这是Java中最常用的类之一,它实现了Map接口,是一个基于哈希表的Map接口的非同步实现。HashMap允许使用null值和null键,不保证映射的顺序;特别是它不保证该顺序随时间的推移保持不变。
  • Hashtable:虽然名为Hashtable,但它实际上也是一个散列表的实现。不过,与HashMap相比,Hashtable是同步的,这意味着它在多线程环境下是安全的。但是,由于同步操作带来的开销,Hashtable在单线程环境下的性能通常低于HashMap。另外,Hashtable不允许键或值为null。
  • LinkedHashMap:这个类扩展了HashMap,并维护了一个运行于所有条目的双重链接列表。这个链表定义了迭代器遍历条目的顺序,该顺序可以是插入顺序或者是访问顺序(取决于构造器中的accessOrder参数)。
  • TreeMap:虽然TreeMap不是基于哈希表的,但它实现了Map接口,并且可以看作是一种有序的映射(基于红黑树实现)。这里提到它是因为它在某些方面与HashMap等散列表实现有对比意义。

3. 只重写equals会导致什么问题?

在这个Person类中我们只重写了equals方法

package com.Month08.Day_02;import java.util.Objects;public class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public Person() {}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return age == person.age && Objects.equals(name, person.name);}}

如何我们在测试类中new两个对象 , 因为此时的euqals方法已经被重写 , 尽管对象a , b的地址值不同但是因为都是空参 , 也就是传入的值相同会使得a.equals(b)为true , 但是优惠遇到一个问题也就是HashCode值不相同

package com.Month08.Day_02;import java.util.stream.Stream;public class Test {public static void main(String[] args) {Person a = new Person();Person b = new Person();System.out.println(a); // com.Month08.Day_02.Person@214c265eSystem.out.println(b); // com.Month08.Day_02.Person@448139f0System.out.println(a.hashCode()); // 558638686System.out.println(b.hashCode()); // 1149319664System.out.println(a.equals(b)); // true}
}

我们知道在散列表中如hashmap中 , 在储存元素之前会通过计算key的值来确定key是否重复 , 那么回到上面的问题 , 如果 我们将a , b这两个对象作为key进行储存 , 通过HashCode计算发现他们HashCode不相同 , 那么这两个对象到底是相同的还是不同的呢?

 HashMap<Person, String> map = new HashMap<>();map.put(a , "123");map.put(b , "456");System.out.println(map.get(a)); //123System.out.println(map.get(b)); // 456

所以为了避免这样的问题 , 我们在重写equals的时候同时需要重新hashcode

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

相关文章:

  • 德阳建设局官方网站大型服务器多少钱一台
  • 一个旅游网站怎么做做微信公众号网站源码
  • wordpress icp备案在哪个文件中郑州seo
  • 网站维护收费国外服务器有哪些
  • 如何选择网站改版公司洛阳设计公司官网
  • 阿里云网站建设方案书模板无锡市无锡市住房和城乡建设局网站
  • 网站备案 上线做网站开发的提成多少钱
  • 网站开发流程及详解wordpress 菜单显示
  • 文档流程做网站郑州市做网站
  • discuz网站模板中铁建设集团门户网登录不上去
  • 推荐手机网站建设培训机构网站如何建设
  • 一个网站备案多个域名吗百度广告投放收费标准
  • 做任务免费领取东西的网站网站建设初学者教程
  • 可信的邢台做网站wordpress query.php
  • 互联网营销 网站 推荐百度验证文件放在wordpress根目录
  • 网站正在建设中图片wordpress 主题 空白
  • 在本地做的网站上传到空间之后_刷新就跳到本地的网址怎么办石家庄精准推广
  • seo网站建设哪家专业常熟企业网站建设价格
  • 网站案例网站建设重庆锅炉网站建设费用
  • 微信上建微网站要钱吗北京营销型网站建设费用
  • ae模板精品站营销型网站建设的要素
  • 眉山网站开发可以用服务器做网站
  • 如何查看一个网站做的外链网站开发 app
  • 济南建设工程业绩公示的网站深圳公明网站制作
  • 网站在线访谈栏目建设做网站需要钱吗
  • 做区域县城招聘网站网站建设深圳哪家公司好
  • 做网站编程时容易遇到的问题做项目的招聘网站
  • 广西网站运营最好的公司报备小程序怎么制作
  • houzz室内设计app推广优化排名
  • 江苏做网站的公司有哪些找人做网站需要花多少钱