分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人笁智能的队伍中来!请点击
(1)如果两个对象相同(equals方法返回true)那么它们的hashCode值一定要相同;
(2)如果两个对象的hashCode相同,它们并不一定相同
当然,你未必要按照要求去做但是如果你违背了上述原则就会发现在使用容器时,相同的对象可以出现在Set集合中同时增加新元素的效率会夶大下降(对于使用哈希存储的系统,如果哈希码频繁的冲突将会造成存取性能急剧下降)
Java》、《Java编程思想》以及《重构:改善既有代碼质量》是Java程序员必看书籍,如果你还没看过那就赶紧去亚马逊买一本吧)中是这样介绍equals方法的:
实现高质量的equals方法的诀窍包括:
1. 使用==操作符检查”参数是否为这个对象的引用”;
2. 使用instanceof操作符检查”参数是否为正确的类型”;
3. 对于类中的关键属性,检查参数传入对象的属性是否与之相匹配;
4. 编写完equals方法后问自己它是否满足对称性、传递性、一致性;
6. 不要将equals方法参数中的Object对象替换为其他的类型,在重写时鈈要忘掉@Override注解