黑马程序员 集合里的对象所属类要按需求重写equals方法

---------------------- android培训java培训、期待与您交流! ---------------------- 

我们知道Object类里有一个比较方法equals,比的是两个对象是不是同一对象,返回布尔数据:
obj1.equals(obj2);

集合有一个方法contains,用于判断这个集合中是否含有某个对象,返回布尔数据:
list.contains(obj);
判断的过程是依次查找集合里的每一个元素,拿每个元素和obj进行equals判断。

除了封装数据类型的类(String,Integer等) equals比较数据值 ,我们自定义的类(如Person)调用底层 equals是比较对象的地址。而有时候我们想通过Person中的某些属性来确定一个对象的唯一性,比如假设name属性唯一,那么在一个Person对象组成的集合中判断是否contains一个name为“mike”的人时,就不该比较对象地址了,而要自定义equals让他们比较name值。
Person类可以这样写:

class Person
{
	private String name;
	Person(String name)
	{
		this.name=name;
	}
	public boolean equals(Object b)
	{
		if(!(b instanceof Person))
			return false;
		Person p2=(Person)b;//b处于多态情况,要强制转成Person
		return this.name==p2.name;
	}
	public String getName()
	{
		return name;
	}
}


        另外补充一下,ArrayList集合和LinkedList集合的remove(Object obj)和contains类似,也依赖equals,因为他要先找到和参数obj相同的对象,再移除他。



 -------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值