equals方法的实现问题 程序里的一个类需要覆盖equals方法,比较两个对象的GUID如果相同则返回TRUE,但是同时应该覆盖hashcode方法。hashcode方法应该如何改写这里guid是以字符串存储的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你如如何判断equals的,肯定是判断其属性吧hashcode说起来只是一个标识,可以直接返回你的类中的属性的hashcode 那用不到重写hashCode方法的,在equals方法中返回GUID比较结果就可以了 在改写equals 和 hashCode 函数的时候,一定要遵守如上3条约定,在改写equals的同时也改写hashCode的实现,这样才能保证得到正确的结果。 你想通过一个object的key来拿hashmap的value,hashmap的工作方法是,通过你传入的object的hashcode在内存中找地址,当找到这个地址后再通过equals方法来比较这个地址中的内容是否和你原来放进去的一样,一样就取出value。 现在我们定义了 equals() ,我们必须以统一的方法来定义 hashCode() 。一种统一但并不总是有效的定义 hashCode() 的方法如下:public int hashCode() { return 0; } 1. 在同一应用中,一个对象的hashCode函数在equals函数没有更改的情况下,无论调用多少次,它都必须返回同一个整数。 2. 两个对象如果调用equals函数是相等的话,那么调用hashCode函数一定会返回相同的整数。 3. 两个对象如果调用equals函数是不相等的话,那么调用hashCode函数不要求一定返回不同的整数。 public int hashCode(){ return guid.hashCode();} 也就是说 guid.hashcode(); 重写hashcode()的时候可以根据 自己的需要呀。。比如 你可以在这里定义hashcode()返回字符串长度。 public class MyObject { public String GUID = null; public MyObject(){ } public boolean equals(Object obj){ if(!(obj instanceof MyObject)){ return false; } MyObject mb = (MyObject)obj; if(GUID == null || mb.GUID == null){ return false; } return GUID.equals(mb.GUID); } public int hashCode() { if(GUID != null){ return GUID.hashCode(); } return super.hashCode(); }} String 类已经写好了,咱直接用GUID.hashCode(),如果你有两个StringGUID1.hashCode+GUID2.hashCode();怎么能return 0;?不解 大家帮我看看啊 ,这个要怎么修改才能正确 程序设计大赛第三题 菜鸟请进---java初学者项目实践 Windows下用C++写的dll如何才能被Linux下的Java调用? 关于finally语名块的执行问题? 使用JTextPane如何得到网页提交的数据? 小弟初学jsp跟sql2000的连接,出现连接问题不会解决,请帮忙。 一个"hello world"程序的问题!1 为什么我的图片加载不上去? 初学者的问题 java中用抽象类做两个数的相加减乘除操作 关于javac和java。没有入门就遇上难题了!
现在我们定义了 equals() ,我们必须以统一的方法来定义 hashCode() 。一种统一但并不总是有效的定义 hashCode() 的方法如下:public int hashCode() { return 0; }
2. 两个对象如果调用equals函数是相等的话,那么调用hashCode函数一定会返回相同的整数。
3. 两个对象如果调用equals函数是不相等的话,那么调用hashCode函数不要求一定返回不同的整数。
public int hashCode(){
return guid.hashCode();
}
也就是说 guid.hashcode();
public class MyObject { public String GUID = null;
public MyObject(){
}
public boolean equals(Object obj){
if(!(obj instanceof MyObject)){
return false;
}
MyObject mb = (MyObject)obj;
if(GUID == null || mb.GUID == null){
return false;
}
return GUID.equals(mb.GUID);
}
public int hashCode() {
if(GUID != null){
return GUID.hashCode();
}
return super.hashCode();
}
}
GUID.hashCode(),如果你有两个String
GUID1.hashCode+GUID2.hashCode();
怎么能return 0;?不解