关于 equals()与hashcode()方法
2024-08-30 15:42:23
类重写了equals()方法也必须重写hashcode()方法,否则会导致该类无法与基于散列值的集合(HashMap、HashSet、HashTable)一起正常使用。 hashcode()方法遵循的原则: 1、同一个对象多次调用hashcode(),返回的结果必须相等。
2、两个对象equals()方法相等,hashcode()也必须相等。
3、两个对象equals()方法不等,hashcode()不要求必须不等,但是应尽可能的分散以提高散列表的效率 如何重写hashcode(): 1.给int变量赋值
2.为对象中每个有意义的字段计算出一个散列码
3.合并
4.返回结果
5.验证结果,确保相同的对象有相同的散列码 demo: public class Test {
private String s = null;
private int id = 0;
.
.
.
public int hashCode() {
int result = 17;
result = 37 * result + s.hashCode();
result = 37 * result + id;
return result;
}
}
最新文章
- No plugin found for prefix ‘jetty’ in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories
- 第 1 章 jQuery EasyUI 入门
- spring mvc 深入学习
- 洛谷P1901 发射站
- Beginning Android 4 中 Demo Basic/Switch 的问题.
- HDU 1542 Atlantis(线段树扫描线+离散化求面积的并)
- DATASNAP为支持FIREDAC而增加的远程方法的数据类型TFDJSONDataSets
- UISegmentedControl UISlider
- Android 圆形背景shape定义
- 解决Sublime Text3莫名的中文乱码问题
- 使用Java创建RESTful Web Service(转)
- Minigui3.0 自定义遥控输入引擎
- ASP.NET应用程序的生命周期
- js打开新窗口,打开新窗口屏蔽工具栏和地址栏,窗口按规定大小显示
- python 对象存储OSS 阿里云
- IntelliJ IDEA的main方法,for循环,syso的快捷键
- Linux系统安装和网络配置
- es6 javascript对象方法Object.assign() 对象的合并复制等
- python使用os.listdir和os.walk获得文件的路径
- WebSocket原理与实践(四)--生成数据帧