对象的比较及hashCode、equals方法的使用

如何进行对象的值的比较呢?如String类型的变量,是靠调用equals方法来比较的,而其它的类似数组或普通的对象直接调用equals方法一般是不可以的,这是因为String类型的变量通过调用equals方法来比较变量是因为String类覆盖了Object的HashCode方法和equals方法。正如String调用equals方法可以比较String对象变量的值是否相等,一般的对象也可以通过覆盖Object类的方法来达到同样的目的的。如下面代码 所示:

import java.util.HashMap;
import java.util.Map;
/*
 * @author mnmlist
 * @date 8/18/2015
 * @description the basic usage of hashCode and equals method
 */
class Stu
{
	String sno;
	String sname;
	public Stu(String sno,String sname)
	{
		this.sno=sno;
		this.sname=sname;
	}
	public String getSno()
	{
		return sno;
	}
	public boolean equals(Object obj)
	{
		if(!(obj instanceof Stu))
			return false;
		if(obj==this)
			return true;
		return this.sno.equals(((Stu)obj).getSno());
	}
	public int hashCode()
	{
		return (sno+sname).hashCode();
	}
}
public class HashcodeDemo
{

	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		Map<Stu, Integer>map=new HashMap<>();
		Stu st1=new Stu("123", "Sting");
		Stu st2=new Stu("234", "mnmlist");
		Stu st3=new Stu("345", "Tony");
		map.put(st1, 1);
		map.put(st2,2);
		map.put(st3, 3);
		Stu stu=new Stu("123", "Sting");
		System.out.println(map.containsKey(stu));
	}

}
如上述代码所示,通过覆盖hashCode方法和equals方法可以实现对对象的比较
结果:

true



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值