대상의 비교 및hashCode,equals 방법의 사용

어떻게 대상의 값을 비교합니까?예를 들어 String 유형의 변수는 equals 방법을 사용해서 비교하는 것이고 다른 유사한 수조나 일반적인 대상은 equals 방법을 직접 사용해서는 안 된다. 이것은 String 유형의 변수가 equals 방법을 사용해서 변수를 비교하는 것은 String 종류가 Object의 HashCode 방법과 equals 방법을 덮어쓰기 때문이다.String이 equals 방법을 사용하면 String 대상 변수의 값이 같은지 비교할 수 있고 일반적인 대상도 Object 클래스를 덮어쓰는 방법을 통해 같은 목적을 달성할 수 있다.다음 코드와 같습니다.
4
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

좋은 웹페이지 즐겨찾기