java里面的equals和hashcode的总结
问题1:
java比较两个对象,除了equals,为什么还要重写hashcode方法?
基本类型比较,用==就可以了。
对象比较,equals比较是对象的内存地址,hashcode比较的也是对象的内存地址的换算结果(因为Object中的hashCode方法返回的是对象本地内存地址的换算结果,不同的实例对象的hashCode是不相同的)。
有时候根据自己的业务逻辑,重写了equals,如果不重写hashcode,两个对象的内存地址肯定不一样,hashcode肯定不一样,那么两个对象肯定不一样,可能跟业务逻辑
不符。比如本来两个对象的两个属性是一样的,这两个对象业务上应该是相等的,但是不重写hashcode,则这两个对象是不相等的,就有矛盾了。比如往HashSet里面添加对象。
http://blog.csdn.net/jiangwei0910410003/article/details/22739953
问题2:
重写hashCode为什么都有31?这是做什么的?
http://www.iteye.com/topic/257191
http://www.iteye.com/topic/680433
问题3:
object自己的hashCode方法具体是怎么实现的?
public native int hashCode();
native关键字,是java同c语言打交道的接口
见 http://www.enet.com.cn/article/2007/1029/A20071029886398.shtml
好深奥,跟jvm打交道
http://xinglongbing.iteye.com/blog/343484
问题4:
如果两个对象相等,则hashcode相等;如果hashcode相等,则两个对象可能相等也可能不相等。
两个在equals的意义下相等(equal)的对象应该有相等的hash codes(但并没有说hash codes相等就一定equals)
http://bbs.csdn.net/topics/350172637
http://java-min.iteye.com/blog/1416727
可以参考文档地址如下:http://aiou.iteye.com/blog/1973712
java里面的equals和hashcode的总结的更多相关文章
- Java中的equals和hashCode方法
本文转载自:Java中的equals和hashCode方法详解 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要 ...
- Java中的equals和hashCode方法详解
Java中的equals和hashCode方法详解 转自 https://www.cnblogs.com/crazylqy/category/655181.html 参考:http://blog.c ...
- 解析Java对象的equals()和hashCode()的使用
解析Java对象的equals()和hashCode()的使用 前言 在Java语言中,equals()和hashCode()两个函数的使用是紧密配合的,你要是自己设计其中一个,就要设计另外一个.在多 ...
- 转:Java中的equals和hashCode方法详解
转自:Java中的equals和hashCode方法详解 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要重写这 ...
- Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)
Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例 原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ...
- Java中的equals()和hashCode() - 超详细篇
前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的equals()和hashCode() - 详细篇>,希望对大家有帮助,谢谢 文章纯属原创,个人总结难免有差错,如果有,麻烦在评论 ...
- QVariant(相当于是Java里面的Object,起到一个数据类型“擦除”的作用,可以使用Q_DECLARE_METATYPE进行注册)
=QVariant= [%这个类型相当于是Java里面的Object,它把绝大多数Qt提供的数据类型都封装起来,起到一个数据类型“擦除”的作用.比如我们的 table单元格可以是string,也可以是 ...
- java中间==、equals和hashCode差额
java于==.equals().hashCode()和比较两个对象. 关于== ==是easy理解的.java设计java就是要比較两个对象是不是同一个对象. 对于引用变量而言.比較的时候两个引用变 ...
- 转:JAVA里面的int类型 和Integer类型,有什么不一样
JAVA里面的int类型 和Integer类型,有什么不一样 原文链接:http://blog.csdn.net/wuxinliulei/article/details/11099565 java.l ...
随机推荐
- nodejs 初学笔记
首先到nodejs的官网安装nodejs,地址nodejs.org,网站第一页会根据你的电脑系统推荐你适合的版本,下载,不断next,在cmd中输入 node -v 可以看到版本的话,即安装成功. 说 ...
- ichartjs-基于html5的图表组件
大家可以到官网学习:ichartjs官网 带你进入官网:
- C++学习笔记7——模板
函数模板: #include <iostream> using namespace std; template <typename T> T max(const T & ...
- 使用UIImagePickerController时3DTouch引起Crash
一.crash的场景 程序中用到UIImagePickerController时,如果在IPhone6S上运行APP,当forceTouch 一个图片时程序会crash,并附带如下crash mess ...
- plugin
http://wicky.nillia.ms/headroom.js/ http://makotot.github.io/sidebar/ http://www.nodebeginner.org/in ...
- HID燈是什么及其工作原理
HID為HighIntensityDischarge的縮寫,即高壓氣體放電燈,它發光的原理是將12V電壓增壓至23000V的超高電壓,激穿填充在石英管的氙氣,使它發光.然后再將電壓轉成85V左右,穩定 ...
- eclipse能够自动提示变量名.
打开 Eclipse -> Window -> Perferences -> Java -> Editor -> Content Assist,在右边最下面一栏找到 au ...
- Java ClassLoader基础及加载不同依赖 Jar 中的公共类(转)
http://www.iteye.com/topic/1135259 http://www.trinea.cn/android/java-loader-common-class/ http://www ...
- 【转】深层次探讨mutex与semaphore之间的区别(下)
原文网址:http://blog.chinaunix.net/uid-23769728-id-3173282.html 这篇博文很长,虽然这是下篇,但还没结束,benchmark方面的东西正在进行中, ...
- wxWidgets搜索事件处理函数顺序
详细参见:使用wxWidgets进行跨平台程序开发 (王强 译) 实例: class MyFrame:public wxFrame { public: MyFrame() { wxButton* bu ...