1. 程式人生 > >hashcode重寫

hashcode重寫

/**
 * 當一個類的例項作為HashMap的key時它的equals方法
 * 與hashcode方法的重寫直接影響著散列表(HashMap)
 * 的查詢效能
 * 在api文件中object對這兩個方法的重寫做了說明
 * 當我們重寫一個類的equals方法時,就應當連同重寫hashcode方法
 * 這兩個方法重寫應當遵循:
 * 1:一致性,當兩個物件的equals比較為true時,hashcode方法返回的數字
 *	必須相等。反過來雖然不是必須,但也應當遵循,否則在Hahcode中
 * 	會形成連結串列影響效能。
 * 	所以兩個物件的hashcode值相同,equals比較也應當為true
 * 2.穩定性,hashcode方法多次呼叫後返回的數字應當相同,不應是
 * 	一個變化的值,除非equals比較的屬性值發生了改變。
 */
public class mon2 {
	private int x;
	private int y;
	@Override//滑鼠右鍵-source-hashcode····
	public int hashCode() {//"身份證號碼唯一性"
		final int prime = 31;
		int result = 1;
		result = prime * result + x;
		result = prime * result + y;
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		mon2 other = (mon2) obj;
		if (x != other.x)
			return false;
		if (y != other.y)
			return false;
		return true;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 System.out.println(new mon2().hashCode());
	}

}