求助:java中contains的equals方法重写传参是怎么整的?

Luke_Zheng Luke_Zheng 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
最近学习contains传参整不明白了,请指导一下。
比较困惑的是:
集合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是有区别的。

nichengyebitianBS

JAVA常见知识

@[TOP] 一,关于main方法的问题 1,main方法传参形式? String 数组,且不能改变 2,mian方法为啥是静态的? main方法一定要是静态的,如果不是jvm就要先实例化它的类。如果是非静态的,就只能作为普通方法使用,虽然可以编译成功,但是运行会失败。 3,main方法可以重载吗? 可以, 4,main方法可以被覆盖吗? 因为其实静态的,所以在jvm编译时静态方法会编译在一起,为...

老马识途2.0

Java中判断对象是否相等的equals()方法使用教程

与==运算符响应,equals()方法也是Java中对对象进行比较的一大方式,要特别注意二者的不同点,这个我们在下文中即将讲到,接下来我们就来看一下Java中判断对象是否相等的equals()方法使用教程

weixin_38703895

java集合——Java中的equals和hashCode方法详解

本篇文章详细介绍了Java中的equals和hashCode方法详解,Object 类是所有类的父类,非常具有实用价值,需要的朋友可以参考下。

weixin_38688820

List集合多个复杂字段判断去重的案例

今天小编就为大家分享一篇关于List集合多个复杂字段判断去重的案例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

weixin_38689857
评论 4
收藏 已收藏
分享
返回顶部
Luke_Zheng
Java SE 62,620 成员 307,251 内容