这个类的equals方法已经重写了,如下
class myLink{
...
...public String getName(){
return this.name;
}public boolean equals(Object obj){
if(obj == null || !(obj instanceof myLink)
return false;
return ((myLink)obj).getName.equals(this.getName);
}
...
}请问还有什么需要做的东西么?
class myLink{
...
...public String getName(){
return this.name;
}public boolean equals(Object obj){
if(obj == null || !(obj instanceof myLink)
return false;
return ((myLink)obj).getName.equals(this.getName);
}
...
}请问还有什么需要做的东西么?
还要重写 hashCode() 方法 他们是用 关键字的equals() 方法和hashCode () 方法来比较一个对象是否相等的
List 中只能按 index 取对象
我也重写了hashCode()方法,是这样写的
public int hashCode(){
return this.getName.hashCode();
}但是还是不行。
Collection myLinks = XXXX.getAllLinks();myLink temp = XXXXX.getInterestLink();if(myLinks.contains(myLink)){......}//就是这句话,即使myLinks中已经有myLink,contains方法也会返回false
setName()方法:private void setName(String name){
this.name = name;
}我通过log跟踪以后发现,在collection集合的hashCode集合里面,包含了我所要查找的对象的
hashCode(),
但是问题是为什么contains方法不管用?
public boolean equals(Object obj){
if(obj == null || !(obj instanceof myLink)
return false;
return ((myLink)obj).getName.equals(this.getName);
}
...
}
这句话编译能够通过?
Collection只是一个接口,它有两个子接口List,Set
而且java.util没有任何一个直接实现Collection的东西,所以如果是Set的话,并且是HashSet的话,就是hashCode有关,其他都和hashCode无关.
Collection接口的不同实现有着不同的要求
光说Collection有什么用啊?
如果用list的话,根本就不用考虑equals