日期:2014-05-20  浏览次数:20587 次

“Person”的类,重写hashCode,返回身份证号,如何解决?
我做了一个“Person”类,重写其hashCode()方法,要用“身份证号”作为返回值,但是,“hashCode”的返回值必须是int,而int的位数不够,应该怎么办?
求高手指教,我需要对身份证号做怎样的处理?如果不用身份证号,还有其他的建议吗?谢谢,
------解决方案--------------------
是不是已经复写了equals方法?根据equals的返回值复写hashCode方法
------解决方案--------------------
额,那有些身份证还有英文字母呢?重写个equals方法判断吧
------解决方案--------------------
怎么有个一样的帖子? 也是楼主发的吗?

contains是先判断hashcode,然后再用equals的。
所以把name或者省份证的String的hashCode作为Person的hashcode。
equals里比较身份证。
------解决方案--------------------
只能说楼主第一步就错了,身份证是唯一的,而身份证太长了,hashCode之后,极有可能是不唯一的。所以不能用hashCode来代表一个人的身份,除非你采取容错机制。
------解决方案--------------------
hashCode 这种函数本身是作为类库内部使用的
不知道为什么会有这么奇怪的需求,把hashCode写成身份证
就算让你重写了,那equals怎么办,对象比较怎么办,序列化怎么办...
考虑问题要全面
------解决方案--------------------
身份证号直接做为类的一个属性就好了啊- -
干嘛要重写hashCode方法来得到那么麻烦- -