求助:java中contains的equals方法重写传参是怎么整的?
最近学习contains传参整不明白了,请指导一下。
比较困惑的是:
集合c中的元素-对象p具有id和name属性,以id作为判断基本判断c中是否含有p时,集合c怎么调用的id?
即equals重写时,p作为传参到obj,然后进行强转,强转后的p.id不变还是其本身的属性。
但是,c作为调用者this,this.id即c.id,但是集合c中不具备id属性,怎么调用比较的。
比较困惑的是:
集合c中的元素-对象p具有id和name属性,以id作为判断基本判断c中是否含有p时,集合c怎么调用的id?
即equals重写时,p作为传参到obj,然后进行强转,强转后的p.id不变还是其本身的属性。
但是,c作为调用者this,this.id即c.id,但是集合c中不具备id属性,怎么调用比较的。
import java.util.*;
public class Demo1 {
public static void main(String[] args) {
Collection c=new ArrayList();
Person p=new Person(12,"狗娃")
c.add(p);
System.out.println("集合c中的id为"+c.contains(p));
}
}
class Person{
int id;
String name;
public Person(int id,String name) {
this.id=id;
this.name=name;
}
@Override
public boolean equals(Object obj) {
Person p=(Person)obj;
return this.id==id;//判断id是否相等?
}
@Override
public int hashCode() {
return this.hashCode();
}
}
...全文
相关推荐
3 Java中关于==和equal的区别 以及equals()方法重写
Java语言是sun公司的开发成果,他的主要特点是可以执行强,与平台的无关性使他的实用性更强。但是Java中的==与equal是有区别的。
JAVA常见知识
@[TOP] 一,关于main方法的问题 1,main方法传参形式? String 数组,且不能改变 2,mian方法为啥是静态的? main方法一定要是静态的,如果不是jvm就要先实例化它的类。如果是非静态的,就只能作为普通方法使用,虽然可以编译成功,但是运行会失败。 3,main方法可以重载吗? 可以, 4,main方法可以被覆盖吗? 因为其实静态的,所以在jvm编译时静态方法会编译在一起,为...
Java中判断对象是否相等的equals()方法使用教程
与==运算符响应,equals()方法也是Java中对对象进行比较的一大方式,要特别注意二者的不同点,这个我们在下文中即将讲到,接下来我们就来看一下Java中判断对象是否相等的equals()方法使用教程
java集合——Java中的equals和hashCode方法详解
本篇文章详细介绍了Java中的equals和hashCode方法详解,Object 类是所有类的父类,非常具有实用价值,需要的朋友可以参考下。
List集合多个复杂字段判断去重的案例
今天小编就为大家分享一篇关于List集合多个复杂字段判断去重的案例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧


Java SE
