class Router{
private String ip;
public boolean equals(Router r){
return ip.equals(r.ip);
}
public Router(String ip){
this.ip=ip;
}
public static void main(String[] args){
ArrayList<Router> rlist=new ArrayList<Router>();
Router r1=new Router("192.168.0.1");
rlist.add(r1);
Router r2=new Router("192.168.0.1");
System.out.println(rlist.indexOf(r2));//此处返回值为-1
}
}我重写了equals方法,希望是如果Router类的两个对象r1,r2中的ip属性值相同,就认为两个对象是一样的,在rlist中判断出r2已经存在,但返回值总是-1,怎么做才能返回值不为-1呢?谢谢
public boolean equals(Object obj) { return this.ip.equals(((Router)obj).ip);
}
if(r == null || !(r instanceof Router))
return false;
return ip.equals(((Router)r).ip);
}
public boolean equals(Object obj){
if(this == obj){
return true;
}
if(obj instanceof Router){
Router anotherRouter = (Router) obj;
return ip.equals(anotherRouter.ip);
}
return false;
}
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
if(obj == this){
return true;
}
if(obj == null || obj.getClass() != this.getClass()){
return false;
}
Router router = (Router)obj;
return this.ip.equals(router.ip);
}