public int hashCode() {
int sum = width + height;
return sum * (sum + 1)/2 + width;
}
int sum = width + height;
return sum * (sum + 1)/2 + width;
}
解决方案 »
- Socket实现多线程通信问题
- java Clone 对象 迷惑
- 问一道 测试题 帮忙啊
- 关于JTextField addFocusListener的奇怪问题
- 求,住店计费思路
- 请教各种Java的区别
- Thinking in Java 3rd Edition 中文版
- 如何让treeViewer , tabletreeViewer ,ListViewer 的某个节点得到焦点
- 急啊!!!java中如何调用C中数据类型指计?
- 有没有人碰到相同的问题:jbuilder中建立主form之后,新建的jframe显示的时候总是有问题。
- 新手问题多重继承下的顶层基类的成员怎样直接访问
- 面试中遇到过英文口语考察的同志们进来帮个忙!600里加急!
hascode不能重复的吧
但是a.hashCode() == b.hashCode() -/-> a.equals(b)
return sum * (sum + 1)/2 + width;
为什么能满足hashcode尽量不重复的要求?这里面有什么数学定理或数学常识吗?
If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result.
It is not required that if two objects are unequal according to the equalsmethod, then the two objects must produce distinct hash code.
当你实现了equals的时候,一定要同时生成hashCode,并且当对象相等hashcode也应该相等.
hashcode主要用在散列的时候对查询等效率影响较大,所以如果生成的hashcode 很容易重复的话,一个由你的对象所组成的HashMap(HashTable)效率就会非常的低.至于hashCode采用什么方法生成并没有特殊规定,只要满足上边几个条件就行了.