[color=red][size=xx-large]当需要判断两个对象相等时候,一直听到说 ,有的时候要重写equals的同时要重写 hashcode方法,看不懂,求高人教教我,谢谢,最好有例子,越具体越好[/size][/color]
2条回答 默认 最新
- 会飞的五花肉 2011-01-17 14:50关注
一个例子,,看下吧。。如果屏蔽public int hashCode()方法,,比较下。结果。
[code="java"]
package Cs;import java.util.HashMap;
import java.util.Map;public class Test2 {
/** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Map map=new HashMap(); map.put(new PhoneNumber(020,1234567),"xx"); System.out.println(map.get(new PhoneNumber(020,1234567))); } private static class PhoneNumber{ /** * @param areaCode * @param extension */ public PhoneNumber(int areaCode, int extension) { this.areaCode =(short) areaCode; this.extension = (short)extension; } private short areaCode; private short extension; public boolean equals(Object o){ if(o==this){ return true; } if(!(o instanceof PhoneNumber)){ return false; } PhoneNumber pn=(PhoneNumber)o; return pn.extension==extension && pn.areaCode==areaCode; } //result就是我们得到的散列值,,计算过程有多种,这里只是个例子 public int hashCode(){ int result=17; result=37*result+areaCode; result=37*result+extension; return result; } }
}
[/code]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器