ArrayList类中,indexOf方法的返回值问题

simonqsm 2009-10-20 11:05:19

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呢?



谢谢
...全文
1422 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobo364 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 mingjian_zheng 的回复:]
equals方法错了

Java code
@Overridepublicboolean equals(Object obj) {// TODO Auto-generated method stubif(obj==this){returntrue;
}if(obj==null|| obj.getClass()!=this.getClass()){returnfalse;
}
Router router= (Router)obj;returnthis.ip.equals(router.ip);
}
[/Quote]

正解重写方法必须是同样的方法名,类型,及输入的数据的类型
zhengmj777 2009-10-21
  • 打赏
  • 举报
回复
equals方法错了


@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);
}
  • 打赏
  • 举报
回复
重写方法只能是重写子类从父类中继承来的方法;
重写必须和原来的方法有相同的方法名、相同的参数列表和相同的返回值类型;
重写方法不能比被重写方法具有更严的访问控制权限。
fengfengye 2009-10-21
  • 打赏
  • 举报
回复
是不是应该先rlist.add(r2)这样啊??
铁匠梁老师 2009-10-20
  • 打赏
  • 举报
回复
路过,不错,2楼正解
swandragon 2009-10-20
  • 打赏
  • 举报
回复

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;
}
gefengxztg 2009-10-20
  • 打赏
  • 举报
回复
public boolean equals(Object r){
if(r == null || !(r instanceof Router))
return false;
return ip.equals(((Router)r).ip);
}
  • 打赏
  • 举报
回复
赞一个
gukuitian 2009-10-20
  • 打赏
  • 举报
回复

public boolean equals(Object obj) {

return this.ip.equals(((Router)obj).ip);
}
gukuitian 2009-10-20
  • 打赏
  • 举报
回复
你的equals方法是自己的,不是重写Object类的,
freezgw1985 2009-10-20
  • 打赏
  • 举报
回复
呵呵,看看加学习学习!!
tfsict2008 2009-10-20
  • 打赏
  • 举报
回复
错误很经典,2楼正解
fsn011362 2009-10-20
  • 打赏
  • 举报
回复
了解

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧