在Java中用于联合类似类型的哈希码
问题描述:
我正在使用名为Key
的类。 它有2个栏位:在Java中用于联合类似类型的哈希码
- 地址(类型MyAddress),其具有GUID(型长)
- ID(型长)
这个类可以具有在任何给定点的一个以下:
- 地址不为空和id == - 1个
- adresss为空和id> 0
会不会是正确的做到以下几点:
int hashcode(){
if (address==null) return Long.hashCode(id)
else return Long.hashcode(address.guid)
}
是否有可能从发生的任何问题? 我主要想确保在任何给定时间只有一个字段是相关的时,这是在类联合类中生成哈希码的正确方法。
答
哈希码的要求是两个相等的对象具有相同的哈希码。它看起来像你的哈希码满足这个,因此是完全有效的。
这就是说,它是更好的做法是所有你equals
方法是测试场的结合,并设计在于,假设该对象在HashSet
使用这样的哈希代码,对象合理均匀分布始终。 This answer将概述如何做到这一点的一个很好的例子。
如果类的实例是不可变的,那就很好了。 –
什么是equals函数? –
我相信等于将地址为空,所以与id相比,否则与地址的guid比较。 – slashms