hashcode重寫
阿新 • • 發佈:2018-12-03
/** * 當一個類的例項作為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()); } }