黑马程序员技术交流社区
标题:
这个不算太了解,大家帮帮忙
[打印本页]
作者:
wangyuyus
时间:
2013-11-15 13:18
标题:
这个不算太了解,大家帮帮忙
本帖最后由 wangyuyus 于 2013-11-16 12:23 编辑
这是ArrayList集合添加元素的时候去掉重复元素
public boolean equals(Object obj)
{
if(!(obj instanceof Person)) //
return false;
Person p = (Person)obj;
System.out.println(this.name+"...equals.."+p.name);
return this.name.equals(p.name) && this.age == p.age;
}
这里 的 obj instanceof Person 是什么意思,是每次添加一个信息的时候都判断一次么
作者:
滔哥
时间:
2013-11-15 13:35
提问,标题明确
作者:
付凯鹏
时间:
2013-11-15 14:12
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。
没添加信息就会判断
作者:
qw无语
时间:
2013-11-15 14:18
本帖最后由 qw无语 于 2013-11-15 14:20 编辑
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java01");
当你使用add方法时候,就会使用你加入元素的equals方法
比如这个加入字符串,第一次添加"java01"他判断集合中没有元素,就不会使用equals
第二次,你添加"java02",他会使用字符串的equals方法比较集合所有元素,没有一样的就存入
第三次,你添加"java01",他会使用字符串的equals方法比较集合所有元素,有一样的都不存入
当你存入一个对象,那么你就要复写equals,写出你需要的比方法.
if(!(obj instanceof Person)) //楼上详细些 这个方法
//因为对象不一样就不需要比较下面了
return false;
Person p = (Person)obj;
System.out.println(this.name+"...equals.."+p.name);
return this.name.equals(p.name) && this.age == p.age;
每加入新一个元素都会和集合中所有元素比较一次,就只执行add的元素的equals方法
作者:
spiderman
时间:
2013-11-15 14:19
这个涉及到多态。
首先equals这个方法是用于判断两个元素相不相同,试想一下,如果类型不一样,这两个元素是一样的吗?
答案是肯定不一样。
所以,传到equals方法里面的对象,要先判断他是否是Person类型的,如果不是,那么不用比较了,这两个元素肯定不一样,可以添加到集合中(前提是这个集合没有添加泛型限定)。
obj instanceof Person 二它的意思就是问这个obj,嘿,哥们,你是伪装成毕姥爷的毕老师吗?(视频里面毕老师举的例子)换成专业点的讲话就是,obj是Person类型的吗?
作者:
付凯鹏
时间:
2013-11-15 14:23
每次添加信息就会判断一次
作者:
hel
时间:
2013-11-15 14:33
instanceof 就是判断你传进来的参数obj是不是Person类型的。
比如:
你传进来的是dog.name .他不是person类型的它属于dog类的
所以会返回false,你传进来的都不是想要的那还判断他干嘛
你传进来的是person.name .会返回true
这句话是每次都会判断的
作者:
唐宋元明清
时间:
2013-11-15 16:08
obj instanceof Person//这句话问的含义是你传进来的对象是不是属于Person类。
是每次添加一个信息的时候都判断一次么?
答:是你每次调用equals(Object obj)这个函数时,第一个任务就是判断你传进来的对象是不是属于Person类,是就继续下面的程序,不属于Person类直接返回false。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2