Object类:hashCode() 与 equals() 的关系
2014-01-10 21:54
323 查看
Java对于eqauls方法和hashCode方法是这样规定的:
1、如果两个对象相同,那么它们的hashCode值一相同;
2、如果两个对象的hashCode相同,它们并不一定相同。
上面说的对象相同指的是用eqauls方法比较。
简单一点理解:
hashcode可以理解为分组,如果两个对象哈希值相等,则说明这两个对象将分在同一组;接下来比较equals,如果equals也相等,则说明这两个对象相等!
否则,均为不相等!
代码示例:
1、如果两个对象相同,那么它们的hashCode值一相同;
2、如果两个对象的hashCode相同,它们并不一定相同。
上面说的对象相同指的是用eqauls方法比较。
简单一点理解:
hashcode可以理解为分组,如果两个对象哈希值相等,则说明这两个对象将分在同一组;接下来比较equals,如果equals也相等,则说明这两个对象相等!
否则,均为不相等!
代码示例:
package sample.com; import java.util.HashSet; import java.util.Set; public class EqualsTest { public static void main(String[] args) { Set<A> set = new HashSet<A>(); A a1 = new A(); A a2 = new A(); A a3 = new A(); A a4 = new A(); set.add(a1); set.add(a2); set.add(a3); set.add(a4); System.out.println(set.size()); // 1 } } class A { @Override public int hashCode() { // TODO Auto-generated method stub return 1; } @Override public boolean equals(Object obj) { // TODO Auto-generated method stub return true; } }
相关文章推荐
- Object类中的toString(),equals(), hashCode()方法之间的关系
- 覆盖Object类的equals、hashCode和toString方法
- 【转载】HashMap与HashCode()、equals()的关系---在HashMap中实现以对象为键(key)
- 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解
- java中equals()和hashcode()的关系
- Java中Object类的equals()和hashCode()方法
- hashcode与equals方法的关系
- 集合中 hashcode 与 equals 的关系
- HashMap与HashCode()、equals()的关系---在HashMap中实现以对象为键(key)
- 浅析hashCode()和equals()关系
- 如何覆盖Object类中的equals(),hashCode(),toString()方法
- Java中Object类的equals()和hashCode()方法深入解析
- object类中的equals和hashcode方法
- equals与hashcode的关系
- JAVA - hashcode与equals作用、关系
- java 中hashcode 与 equals的关系
- hashcode 与equals关系
- 7 hashCode方法,equals方法,HashSet,HashMap关系?
- Java中的equals()和hashcode()之间关系
- equals和hashCode之间的关系