java中重写equals方法为什么要重写hashcode方法说明 JAVA中重写equals方法为什么要重写hashcode方...

\u4e3a\u4ec0\u4e48\u91cd\u5199equals\u65b9\u6cd5\uff0c\u4e00\u5b9a\u8981\u91cd\u5199HashCode\u65b9\u6cd5\uff1f

\u5982\u679c\u4f60\u91cd\u8f7d\u4e86equals\uff0c\u6bd4\u5982\u8bf4\u662f\u57fa\u4e8e\u5bf9\u8c61\u7684\u5185\u5bb9\u5b9e\u73b0\u7684\uff0c\u800c\u4fdd\u7559hashCode\u7684\u5b9e\u73b0\u4e0d\u53d8\uff0c\u90a3\u4e48\u5f88\u53ef\u80fd\u67d0\u4e24\u4e2a\u5bf9\u8c61\u660e\u660e\u662f\u201c\u76f8\u7b49\u201d\uff0c\u800chashCode\u5374\u4e0d\u4e00\u6837\u3002
\u8fd9\u6837\uff0c\u5f53\u4f60\u7528\u5176\u4e2d\u7684\u4e00\u4e2a\u4f5c\u4e3a\u952e\u4fdd\u5b58\u5230hashMap\u3001hasoTable\u6216hashSet\u4e2d\uff0c\u518d\u4ee5\u201c\u76f8\u7b49\u7684\u201d\u627e\u53e6\u4e00\u4e2a\u4f5c\u4e3a\u952e\u503c\u53bb\u67e5\u627e\u4ed6\u4eec\u7684\u65f6\u5019\uff0c\u5219\u6839\u672c\u627e\u4e0d\u5230\u3002
\u4f7f\u7528HashMap\uff0c\u5982\u679ckey\u662f\u81ea\u5b9a\u4e49\u7684\u7c7b\uff0c\u5c31\u5fc5\u987b\u91cd\u5199hashcode()\u548cequals()\u3002
\u800c\u5bf9\u4e8e\u6bcf\u4e00\u4e2a\u5bf9\u8c61\uff0c\u901a\u8fc7\u5176hashCode()\u65b9\u6cd5\u53ef\u4e3a\u5176\u751f\u6210\u4e00\u4e2a\u6574\u5f62\u503c\uff08\u6563\u5217\u7801\uff09\uff0c\u8be5\u6574\u578b\u503c\u88ab\u5904\u7406\u540e\uff0c\u5c06\u4f1a\u4f5c\u4e3a\u6570\u7ec4\u4e0b\u6807\uff0c\u5b58\u653e\u8be5\u5bf9\u8c61\u6240\u5bf9\u5e94\u7684Entry\uff08\u5b58\u653e\u8be5\u5bf9\u8c61\u53ca\u5176\u5bf9\u5e94\u503c\uff09\u3002 equals()\u65b9\u6cd5\u5219\u662f\u5728HashMap\u4e2d\u63d2\u5165\u503c\u6216\u67e5\u8be2\u65f6\u4f1a\u4f7f\u7528\u5230\u3002\u5f53HashMap\u4e2d\u63d2\u5165\u503c\u6216\u67e5\u8be2\u503c\u5bf9\u5e94\u7684\u6563\u5217\u7801\u4e0e\u6570\u7ec4\u4e2d\u7684\u6563\u5217\u7801\u76f8\u7b49\u65f6\uff0c\u5219\u4f1a\u901a\u8fc7equals\u65b9\u6cd5\u6bd4\u8f83key\u503c\u662f\u5426\u76f8\u7b49\uff0c\u6240\u4ee5\u60f3\u4ee5\u81ea\u5efa\u5bf9\u8c61\u4f5c\u4e3aHashMap\u7684key\uff0c\u5fc5\u987b\u91cd\u5199\u8be5\u5bf9\u8c61\u7ee7\u627fobject\u7684hashCode\u548cequals\u65b9\u6cd5\u3002 2.\u672c\u6765\u4e0d\u5c31\u6709hashcode()\u548cequals()\u4e86\u4e48\uff1f\u5e72\u561b\u8981\u91cd\u5199\uff0c\u76f4\u63a5\u7528\u539f\u6765\u7684\u4e0d\u884c\u4e48\uff1f HashMap\u4e2d\uff0c\u5982\u679c\u8981\u6bd4\u8f83key\u662f\u5426\u76f8\u7b49\uff0c\u8981\u540c\u65f6\u4f7f\u7528\u8fd9\u4e24\u4e2a\u51fd\u6570\uff01\u56e0\u4e3a\u81ea\u5b9a\u4e49\u7684\u7c7b\u7684hashcode()\u65b9\u6cd5\u7ee7\u627f\u4e8eObject\u7c7b\uff0c\u5176hashcode\u7801\u4e3a\u9ed8\u8ba4\u7684\u5185\u5b58\u5730\u5740\uff0c\u8fd9\u6837\u5373\u4fbf\u6709\u76f8\u540c\u542b\u4e49\u7684\u4e24\u4e2a\u5bf9\u8c61\uff0c\u6bd4\u8f83\u4e5f\u662f\u4e0d\u76f8\u7b49\u7684\uff0c\u4f8b\u5982\uff0c\u751f\u6210\u4e86\u4e24\u4e2a\u201c\u7f8a\u201d\u5bf9\u8c61\uff0c\u6b63\u5e38\u7406\u89e3\u8fd9\u4e24\u4e2a\u5bf9\u8c61\u5e94\u8be5\u662f\u76f8\u7b49\u7684\uff0c\u4f46\u5982\u679c\u4f60\u4e0d\u91cd\u5199 hashcode\uff08\uff09\u65b9\u6cd5\u7684\u8bdd\uff0c\u6bd4\u8f83\u662f\u4e0d\u76f8\u7b49\u7684\uff01
HashMap\u4e2d\u7684\u6bd4\u8f83key\u662f\u8fd9\u6837\u7684\uff0c\u5148\u6c42\u51fakey\u7684hashcode(),\u6bd4\u8f83\u5176\u503c\u662f\u5426\u76f8\u7b49\uff0c\u82e5\u76f8\u7b49\u518d\u6bd4\u8f83equals(),\u82e5\u76f8\u7b49\u5219\u8ba4\u4e3a\u4ed6\u4eec\u662f\u76f8\u7b49\u7684\u3002\u82e5equals()\u4e0d\u76f8\u7b49\u5219\u8ba4\u4e3a\u4ed6\u4eec\u4e0d\u76f8\u7b49\u3002\u5982\u679c\u53ea\u91cd\u5199hashcode()\u4e0d\u91cd\u5199equals()\u65b9\u6cd5\uff0c\u5f53\u6bd4\u8f83equals()\u65f6\u53ea\u662f\u770b\u4ed6\u4eec\u662f\u5426\u4e3a\u540c\u4e00\u5bf9\u8c61\uff08\u5373\u8fdb\u884c\u5185\u5b58\u5730\u5740\u7684\u6bd4\u8f83\uff09,\u6240\u4ee5\u5fc5\u5b9a\u8981\u4e24\u4e2a\u65b9\u6cd5\u4e00\u8d77\u91cd\u5199\u3002HashMap\u7528\u6765\u5224\u65adkey\u662f\u5426\u76f8\u7b49\u7684\u65b9\u6cd5\uff0c\u5176\u5b9e\u662f\u8c03\u7528\u4e86HashSet\u5224\u65ad\u52a0\u5165\u5143\u7d20\u662f\u5426\u76f8\u7b49\u3002
\u5f15\u7528\u522b\u4eba\u8bf4\u7684\u4e00\u6bb5\u8bdd\u54c8~
\u4e00\u822c\u6765\u8bf4\uff0c\u5982\u679c\u4f60\u8981\u628a\u4e00\u4e2a\u7c7b\u7684\u5bf9\u8c61\u653e\u5165\u5bb9\u5668\u4e2d\uff0c\u90a3\u4e48\u901a\u5e38\u8981\u4e3a\u5176\u91cd\u5199equals()\u65b9\u6cd5\uff0c\u8ba9\u4ed6\u4eec\u6bd4\u8f83\u5730\u5740\u503c\u800c\u4e0d\u662f\u5185\u5bb9\u503c\u3002\u7279\u522b\u5730\uff0c\u5982\u679c\u8981\u628a\u4f60\u7684\u7c7b\u7684\u5bf9\u8c61\u653e\u5165\u6563\u5217\u4e2d\uff0c\u90a3\u4e48\u8fd8\u8981\u91cd\u5199hashCode()\u65b9\u6cd5\uff1b\u8981\u653e\u5230\u6709\u5e8f\u5bb9\u5668\u4e2d\uff0c\u8fd8\u8981\u91cd\u5199compareTo()\u65b9\u6cd5\u3002
equals()\u76f8\u7b49\u7684\u4e24\u4e2a\u5bf9\u8c61\uff0chashcode()\u4e00\u5b9a\u76f8\u7b49\uff1b
equals\uff08\uff09\u4e0d\u76f8\u7b49\u7684\u4e24\u4e2a\u5bf9\u8c61\uff0c\u5374\u5e76\u4e0d\u80fd\u8bc1\u660e\u4ed6\u4eec\u7684hashcode()\u4e0d\u76f8\u7b49\u3002\u6362\u53e5\u8bdd\u8bf4\uff0cequals()\u65b9\u6cd5\u4e0d\u76f8\u7b49\u7684\u4e24\u4e2a\u5bf9\u8c61\uff0chashcode()\u6709\u53ef\u80fd\u76f8\u7b49\u3002\uff08\u6211\u7684\u7406\u89e3\u662f\u7531\u4e8e\u54c8\u5e0c\u7801\u5728\u751f\u6210\u7684\u65f6\u5019\u4ea7\u751f\u51b2\u7a81\u9020\u6210\u7684\uff09\u3002
\u53cd\u8fc7\u6765\uff1ahashcode()\u4e0d\u7b49\uff0c\u4e00\u5b9a\u80fd\u63a8\u51faequals()\u4e5f\u4e0d\u7b49\uff1bhashcode()\u76f8\u7b49\uff0cequals()\u53ef\u80fd\u76f8\u7b49\uff0c\u4e5f\u53ef\u80fd\u4e0d\u7b49
\u6211\u7684\u7406\u89e3\u54c8\uff0c

\u91cd\u5199hashCode\uff08\uff09\u65f6\u6700\u91cd\u8981\u7684\u539f\u56e0\u5c31\u662f\uff1a\u65e0\u8bba\u4f55\u65f6\uff0c\u5bf9\u540c\u4e00\u4e2a\u5bf9\u8c61\u8c03\u7528hashCode()\u90fd\u5e94\u8be5\u751f\u6210\u540c\u6837\u7684\u503c\u3002\u5982\u679c\u5728\u5c06\u4e00\u4e2a\u5bf9\u8c61\u7528put\uff08\uff09\u65b9\u6cd5\u6dfb \u52a0\u8fdbHashMap\u65f6\u4ea7\u751f\u4e00\u4e2ahashCode()\u503c\uff0c\u800c\u7528get()\u53d6\u51fa\u65f6\u5374\u4ea7\u751f\u4e86\u53e6\u5916\u4e00\u4e2a hashCode()\u503c\uff0c\u90a3\u4e48\u5c31\u65e0\u6cd5\u91cd\u65b0\u53d6\u5f97\u8be5\u5bf9\u8c61\u4e86\u3002\u6240\u4ee5\uff0c\u5982\u679c\u4f60\u7684hashCode()\u65b9\u6cd5\u4f9d\u8d56\u4e8e\u5bf9\u8c61\u4e2d\u6613\u53d8\u7684\u6570\u636e\uff0c\u90a3\u7528\u6237\u5c31\u8981\u5c0f\u5fc3\u4e86\uff0c\u56e0\u4e3a\u6b64\u6570\u636e\u53d1 \u751f\u53d8\u5316\u65f6\uff0chashCode()\u5c31\u4f1a\u4ea7\u751f\u4e00\u4e2a\u4e0d\u540c\u7684hash\u7801\uff0c\u76f8\u5f53\u4e8e\u4ea7\u751f\u4e86\u4e00\u4e2a\u4e0d\u540c\u7684\u201c\u952e\u201d\u3002 Object\u7684hashCode\uff08\uff09\u65b9\u6cd5\uff0c\u8fd4\u56de\u7684\u662f\u5f53\u524d\u5bf9\u8c61\u7684\u5185\u5b58\u5730\u5740\u3002\u4e0b\u6b21\u5982\u679c\u6211\u4eec\u9700\u8981\u53d6\u4e00\u4e2a\u4e00\u6837\u7684\u201c\u952e\u201d\u5bf9\u5e94\u7684\u952e\u503c\u5bf9\u7684\u65f6\u5019\uff0c\u6211\u4eec\u5c31\u65e0\u6cd5\u5f97\u5230\u4e00\u6837\u7684 hashCode\u503c\u4e86\u3002\u56e0\u4e3a\u6211\u4eec\u540e\u6765\u521b\u5efa\u7684\u201c\u952e\u201d\u5bf9\u8c61\u5df2\u7ecf\u4e0d\u662f\u5b58\u5165HashMap\u4e2d\u7684\u90a3\u4e2a\u5185\u5b58\u5730\u5740\u7684\u5bf9\u8c61\u4e86\u3002 \u6211\u4eec\u770b\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\uff0c\u5c31\u80fd\u66f4\u52a0\u6e05\u695a\u7684\u7406\u89e3\u4e0a\u9762\u7684\u610f\u601d\u3002\u5047\u5b9a\u6211\u4eec\u5199\u4e86\u4e00\u4e2a\u7c7b\uff1aPerson \uff08\u4eba\uff09\uff0c\u6211\u4eec\u5224\u65ad\u4e00\u4e2a\u5bf9\u8c61\u201c\u4eba\u201d\u662f\u5426\u6307\u5411\u540c\u4e00\u4e2a\u4eba\uff0c\u53ea\u8981\u77e5\u9053\u8fd9\u4e2a\u4eba\u7684\u8eab\u4efd\u8bc1\u53f7\u4e00\u76f4\u5c31\u53ef\u4ee5\u4e86\u3002


\u5148\u6765\u4e2a\u6ca1\u6709\u91cd\u5199Code\u7c7b\u7684hashcode()\u7684\u4f8b\u5b50\u5427\uff0c\u770b\u770b\u662f\u4ec0\u4e48\u6548\u679c\uff1a
package com.fit; import java.util.HashMap; /** * \u8eab\u4efd\u8bc1\u7c7b * * @author ZYD * */ public class Code { /** * \u8eab\u4efd\u8bc1\u53f7\u7801\uff0c\u4e00\u65e6\u786e\u5b9a\u5c31\u4e0d\u80fd\u66f4\u6539 */ private final int id; public int getId() { return id; } /** * \u901a\u8fc7\u6784\u9020\u65b9\u6cd5\u786e\u5b9a\u8eab\u4efd\u8bc1\u53f7\u7801 * * @param id */ public Code(int id) { this.id = id; } /** * \u91cd\u5199equals()\u65b9\u6cd5 */ public boolean equals(Object o) { // \u5982\u679c\u5730\u5740\u4e00\u6837\uff0c\u5219\u4e24\u4e2a\u5bf9\u8c61\u76f8\u540c if (this == o) { return true; } // \u5982\u679c\u4e24\u4e2a\u5bf9\u8c61\u662f\u540c\u4e00\u7c7b\u578b\uff0c\u5219\u6bd4\u8f83\u5176\u5c5e\u6027\u503c\u662f\u5426\u90fd\u76f8\u540c\u3002\u5982\u679c\u90fd\u76f8\u540c\uff0c\u5219\u8bf4\u660e\u4e24\u4e2a\u5bf9\u8c61\u4e5f\u76f8\u540c\uff1b\u5426\u5219\uff0c\u8bf4\u660e\u8fd9\u4e24\u4e2a\u5bf9\u8c61\u4e0d\u76f8\u540c\u3002 if (o instanceof Code) { Code co = (Code) o; boolean b = (co.id == this.id); return b; } return false; } /** * \u91cd\u5199toString()\u65b9\u6cd5 */ public String toString() { return "\u3010\u8eab\u4efd\u8bc1\u3011\uff1a" + id; } /** * \u6d4b\u8bd5 * @param args */ public static void main(String[] args) { HashMap map = new HashMap(); Person p1 = new Person(new Code(10001),"\u5f20\u4e09"); Person p2 = new Person(new Code(10002),"\u674e\u56db"); map.put(p1.getCode(), p1); map.put(p2.getCode(), p2); System.out.println("HashMap \u4e2d\u5b58\u653e\u7684\u4eba\u5458\u4fe1\u606f:\n"+map); //\u5f20\u4e09\u6539\u540d\u4e3a\u5f20\u5c71\uff0c\u8eab\u4efd\u8bc1\u53f7\u4e0d\u53d8\u3002 Person p3 = new Person(new Code(10001),"\u5f20\u5c71"); map.put(p3.getCode(), p3); System.out.println("\u5f20\u4e09\u6539\u540d\u4e3a\u5f20\u5c71\u540e HashMap \u4e2d\u5b58\u653e\u7684\u4eba\u5458\u4fe1\u606f:\n"+map); //\u67e5\u627e\u8eab\u4efd\u8bc1\u4e3a10001 \u7684\u4eba\u5458\u4fe1\u606f System.out.println("\u67e5\u627e\u8eab\u4efd\u8bc1\u4e3a\uff1a10001 \u7684\u4eba\u5458\u4fe1\u606f:"+map.get(new Code(10001))); } } /** * \u4eba\u7c7b * @author Administrator * */ class Person { /** * \u6bcf\u4e00\u4e2a\u6210\u4eba\u90fd\u6709\u4e00\u4e2a\u8eab\u4efd\u8bc1 */ private Code code; /** * \u59d3\u540d */ private String name; public Code getCode() { return code; } public void setCode(Code code) { this.code = code; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Person() { } public Person(Code code, String name) { this.code = code; this.name = name; } /** * \u91cd\u5199equals()\u65b9\u6cd5 \u5f53\u4e24\u4e2a\u4eba\u5f97\u8eab\u4efd\u8bc1\u53f7\u76f8\u540c\u4ee5\u53ca\u59d3\u540d\u76f8\u540c\u65f6\uff0c\u8868\u793a\u8fd9\u4e24\u4e2a\u4eba\u662f\u540c\u4e00\u4e2a\u4eba\u3002 */ public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Person) { Person p = (Person) o; boolean b = this.code.equals(p.code) && this.name.equals(p.name); return b; } return false; } /** * \u91cd\u5199toString()\u65b9\u6cd5 */ public String toString() { return "\u3010\u59d3\u540d\u3011\uff1a" + name + " "; } }

\u8fd0\u884c\u7ed3\u679c\uff1a

HashMap \u4e2d\u5b58\u653e\u7684\u4eba\u5458\u4fe1\u606f:{\u3010\u8eab\u4efd\u8bc1\u3011\uff1a10002=\u3010\u59d3\u540d\u3011\uff1a\u674e\u56db , \u3010\u8eab\u4efd\u8bc1\u3011\uff1a10001=\u3010\u59d3\u540d\u3011\uff1a\u5f20\u4e09 }\u5f20\u4e09\u6539\u540d\u4e3a\u5f20\u5c71\u540e HashMap \u4e2d\u5b58\u653e\u7684\u4eba\u5458\u4fe1\u606f:{\u3010\u8eab\u4efd\u8bc1\u3011\uff1a10002=\u3010\u59d3\u540d\u3011\uff1a\u674e\u56db , \u3010\u8eab\u4efd\u8bc1\u3011\uff1a10001=\u3010\u59d3\u540d\u3011\uff1a\u5f20\u4e09 , \u3010\u8eab\u4efd\u8bc1\u3011\uff1a10001=\u3010\u59d3\u540d\u3011\uff1a\u5f20\u5c71 }\u67e5\u627e\u8eab\u4efd\u8bc1\u4e3a\uff1a10001 \u7684\u4eba\u5458\u4fe1\u606f:null

\u4ece\u4e0a\u9762\u7684\u7ed3\u679c\u53ef\u4ee5\u770b\u51fa\uff1a

\u6211\u4eec\u6240\u505a\u7684\u66f4\u65b0\u548c\u67e5\u627e\u64cd\u4f5c\u90fd\u5931\u8d25\u4e86\u3002\u5931\u8d25\u7684\u539f\u56e0\u5c31\u662f\u6211\u4eec\u7684\u8eab\u4efd\u8bc1\u7c7b\uff1a Code \u6ca1\u6709\u8986\u5199 hashCode() \u65b9\u6cd5\u3002\u8fd9\u4e2a\u65f6\u5019\uff0c\u5f53\u67e5\u627e\u4e00\u6837\u7684\u8eab\u4efd\u8bc1\u53f7\u7801\u7684\u952e\u503c\u5bf9\u7684\u65f6\u5019\uff0c\u4f7f\u7528\u7684\u662f\u9ed8\u8ba4\u7684\u5bf9\u8c61\u7684\u5185\u5b58\u5730\u5740\u6765\u8fdb\u884c\u5b9a\u4f4d\u3002\u8fd9\u6837\uff0c\u540e\u9762\u7684\u6240\u6709\u7684\u8eab\u4efd\u8bc1\u53f7\u5bf9\u8c61
new Code(10001) \u4ea7\u751f\u7684 hashCode () \u503c\u90fd\u662f\u4e0d\u4e00\u6837\u7684\uff0c\u6240\u4ee5\u5bfc\u81f4\u64cd\u4f5c\u5931\u8d25\u3002



\u91cd\u5199Code\u7c7b\u7684hashcode()\uff0c\u4ee3\u7801\u4e0a\uff1a

package com.fit; import java.util.HashMap; /** * \u8eab\u4efd\u8bc1\u7c7b * * @author ZYD * */ public class Code { /** * \u8eab\u4efd\u8bc1\u53f7\u7801\uff0c\u4e00\u65e6\u786e\u5b9a\u5c31\u4e0d\u80fd\u66f4\u6539 */ private final int id; public int getId() { return id; } /** * \u901a\u8fc7\u6784\u9020\u65b9\u6cd5\u786e\u5b9a\u8eab\u4efd\u8bc1\u53f7\u7801 * * @param id */ public Code(int id) { this.id = id; } /** * \u91cd\u5199equals()\u65b9\u6cd5 */ public boolean equals(Object o) { // \u5982\u679c\u5730\u5740\u4e00\u6837\uff0c\u5219\u4e24\u4e2a\u5bf9\u8c61\u76f8\u540c if (this == o) { return true; } // \u5982\u679c\u4e24\u4e2a\u5bf9\u8c61\u662f\u540c\u4e00\u7c7b\u578b\uff0c\u5219\u6bd4\u8f83\u5176\u5c5e\u6027\u503c\u662f\u5426\u90fd\u76f8\u540c\u3002\u5982\u679c\u90fd\u76f8\u540c\uff0c\u5219\u8bf4\u660e\u4e24\u4e2a\u5bf9\u8c61\u4e5f\u76f8\u540c\uff1b\u5426\u5219\uff0c\u8bf4\u660e\u8fd9\u4e24\u4e2a\u5bf9\u8c61\u4e0d\u76f8\u540c\u3002 if (o instanceof Code) { Code co = (Code) o; boolean b = (co.id == this.id); return b; } return false; } /** * \u91cd\u5199hashcode()\u65b9\u6cd5\uff0c\u4ee5\u8eab\u4efd\u8bc1\u53f7\u7801\u4f5c\u4e3ahash\u7801\u3002 * * @return */ public int hashCode() { return id; } /** * \u91cd\u5199toString()\u65b9\u6cd5 */ public String toString() { return "\u3010\u8eab\u4efd\u8bc1\u3011\uff1a" + id; } /** * \u6d4b\u8bd5 * @param args */ public static void main(String[] args) { HashMap map = new HashMap(); Person p1 = new Person(new Code(10001),"\u5f20\u4e09"); Person p2 = new Person(new Code(10002),"\u674e\u56db"); map.put(p1.getCode(), p1); map.put(p2.getCode(), p2); System.out.println("HashMap \u4e2d\u5b58\u653e\u7684\u4eba\u5458\u4fe1\u606f:\n"+map); //\u5f20\u4e09\u6539\u540d\u4e3a\u5f20\u5c71\uff0c\u8eab\u4efd\u8bc1\u53f7\u4e0d\u53d8\u3002 Person p3 = new Person(new Code(10001),"\u5f20\u5c71"); map.put(p3.getCode(), p3); System.out.println("\u5f20\u4e09\u6539\u540d\u4e3a\u5f20\u5c71\u540e HashMap \u4e2d\u5b58\u653e\u7684\u4eba\u5458\u4fe1\u606f:\n"+map); //\u67e5\u627e\u8eab\u4efd\u8bc1\u4e3a10001 \u7684\u4eba\u5458\u4fe1\u606f System.out.println("\u67e5\u627e\u8eab\u4efd\u8bc1\u4e3a\uff1a10001 \u7684\u4eba\u5458\u4fe1\u606f:"+map.get(new Code(10001))); } } /** * \u4eba\u7c7b * @author Administrator * */ class Person { /** * \u6bcf\u4e00\u4e2a\u6210\u4eba\u90fd\u6709\u4e00\u4e2a\u8eab\u4efd\u8bc1 */ private Code code; /** * \u59d3\u540d */ private String name; public Code getCode() { return code; } public void setCode(Code code) { this.code = code; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Person() { } public Person(Code code, String name) { this.code = code; this.name = name; } /** * \u91cd\u5199equals()\u65b9\u6cd5 \u5f53\u4e24\u4e2a\u4eba\u5f97\u8eab\u4efd\u8bc1\u53f7\u76f8\u540c\u4ee5\u53ca\u59d3\u540d\u76f8\u540c\u65f6\uff0c\u8868\u793a\u8fd9\u4e24\u4e2a\u4eba\u662f\u540c\u4e00\u4e2a\u4eba\u3002 */ public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Person) { Person p = (Person) o; boolean b = this.code.equals(p.code) && this.name.equals(p.name); return b; } return false; } /** * \u91cd\u5199toString()\u65b9\u6cd5 */ public String toString() { return "\u3010\u59d3\u540d\u3011\uff1a" + name + " "; } }
\u8fd0\u884c\u6548\u679c\uff1a

HashMap \u4e2d\u5b58\u653e\u7684\u4eba\u5458\u4fe1\u606f:{\u3010\u8eab\u4efd\u8bc1\u3011\uff1a10001=\u3010\u59d3\u540d\u3011\uff1a\u5f20\u4e09 , \u3010\u8eab\u4efd\u8bc1\u3011\uff1a10002=\u3010\u59d3\u540d\u3011\uff1a\u674e\u56db }\u5f20\u4e09\u6539\u540d\u4e3a\u5f20\u5c71\u540e HashMap \u4e2d\u5b58\u653e\u7684\u4eba\u5458\u4fe1\u606f:{\u3010\u8eab\u4efd\u8bc1\u3011\uff1a10001=\u3010\u59d3\u540d\u3011\uff1a\u5f20\u5c71 , \u3010\u8eab\u4efd\u8bc1\u3011\uff1a10002=\u3010\u59d3\u540d\u3011\uff1a\u674e\u56db }\u67e5\u627e\u8eab\u4efd\u8bc1\u4e3a\uff1a10001 \u7684\u4eba\u5458\u4fe1\u606f:\u3010\u59d3\u540d\u3011\uff1a\u5f20\u5c71

1、重写equals方法时需要重写hashCode方法,主要是针对Map、Set等集合类型的使用;
a: Map、Set等集合类型存放的对象必须是唯一的;
b: 集合类判断两个对象是否相等,是先判断equals是否相等,如果equals返回TRUE,还要再判断HashCode返回值是否ture,只有两者都返回ture,才认为该两个对象是相等的。
2、由于Object的hashCode返回的是对象的hash值,所以即使equals返回TRUE,集合也可能判定两个对象不等,所以必须重写hashCode方法,以保证当equals返回TRUE时,hashCode也返回Ture,这样才能使得集合中存放的对象唯一。

  • 鍏充簬java绫equals閲嶅啓
    绛旓細1.褰撲袱涓璞″紩鐢ㄥ悓涓涓璞℃椂杩斿洖true;2.褰撳彟涓涓璞℃槸Employee绫诲疄渚嬫椂锛屽畠鐨getName()鏂规硶鍜実etPass()鏂规硶杩斿洖鍊肩浉鍚屾椂杩斿洖true,鍚﹀垯杩斿洖false;3.鍏跺畠鎯呭喌涓寰嬭繑鍥瀎alse;
  • string绫閲嶅啓equal鏂规硶浜嗗悧
    绛旓細} 姝ゅ锛岄渶瑕佹敞鎰忕殑鏄紝褰撴垜浠閲嶅啓equals鏂规硶鏃讹紝閫氬父涔熼渶瑕侀噸鍐檋ashCode鏂规硶锛屼互缁存姢equals鏂规硶鍜宧ashCode鏂规硶涔嬮棿鐨勫绾︼細濡傛灉涓や釜瀵硅薄鏍规嵁equals(Object)鏂规硶鏄浉绛夌殑锛岄偅涔堣皟鐢ㄨ繖涓や釜瀵硅薄鐨刪ashCode鏂规硶蹇呴』浜х敓鐩稿悓鐨勬暣鏁扮粨鏋溿傝繖涔熸槸Java鐨绾﹀畾锛屽惁鍒欙紝渚嬪鍦ㄤ娇鐢℉ashMap绛夋暟鎹粨鏋勬椂锛屽彲鑳戒細浜х敓鎰忓鐨勭粨鏋溿
  • Java涓鍏充簬==鍜宔qual鐨勫尯鍒 浠ュ強equals鏂规硶閲嶅啓
    绛旓細1. == 鏄竴涓繍绠楃銆2.Equals鍒欐槸string瀵硅薄鐨勬柟娉锛屽彲浠.锛堢偣锛夊嚭鏉ャ傛垜浠瘮杈冩棤闈炲氨鏄繖涓ょ 1銆佸熀鏈暟鎹被鍨嬫瘮杈 2銆佸紩鐢ㄥ璞℃瘮杈 1銆佸熀鏈暟鎹被鍨嬫瘮杈 ==鍜孍quals閮芥瘮杈冧袱涓兼槸鍚︾浉绛夈傜浉绛変负true 鍚﹀垯涓篺alse锛2銆佸紩鐢ㄥ璞℃瘮杈 ==鍜孍quals閮芥槸姣旇緝鏍堝唴瀛樹腑鐨勫湴鍧鏄惁鐩哥瓑 銆傜浉绛変负true 鍚...
  • 閲嶅啓equals 鏂规硶鐨娉ㄦ剰浜嬮」
    绛旓細鏄笉鏄湅鐫鏈夌偣鏅曪紝娌¢敊锛岄噸鍐檈quasl鏂规硶鐪嬭捣鏉ュ緢绠鍗曪紝浣嗘槸鏈夊緢澶氱鏂瑰紡浼氬鑷撮噸鍐欏嚭閿欍傛墍浠ユ渶濂鐨鍋氭硶鏄紝娌℃湁蹇呰涓嶈閲嶅啓equals鏂规硶銆傚鏋滀竴瀹氳閲嶅啓鍛紝鏈夋病鏈夋瘮杈冪渷鍔涗笉瀹规槗鍑洪敊鐨勬柟娉曪紵绛旀鏄湁鐨勶紝閭e氨鏄娇鐢╣oogle 鐨凙utoValue寮婧愭鏋舵垨鑰匢DE鑷姩鐢熸垚鍔熻兘銆傚鏋滀娇鐢ˋutoValue妗嗘灦锛屽彧闇瑕佸湪绫讳笂娣...
  • 濡備綍姝g‘鐨勯噸鍐檈quals 鍜 hashCode鏂规硶
    绛旓細閲嶅啓榛樿瀹炵幇 浣跨敤Apache Commons Lang鍖呴噸鍐檋ashCode()鍜equals()闇瑕佹敞鎰忚浣忕殑浜嬫儏 褰撲娇鐢∣RM鐨勬椂鍊欑壒鍒娉ㄦ剰鐨 hashCode()鍜宔quals()瀹氫箟鍦∣bject绫讳腑锛岃繖涓被鏄墍鏈java绫荤殑鍩虹被锛屾墍浠ユ墍鏈夌殑java绫婚兘缁ф壙杩欎袱涓鏂规硶銆備娇鐢╤ashCode()鍜宔quals()hashCode()鏂规硶琚敤鏉ヨ幏鍙栫粰瀹氬璞$殑鍞竴鏁存暟銆傝繖涓暣鏁拌...
  • 濡備綍閲嶅啓Java涓鐨equals鏂规硶
    绛旓細鍦↖DE涓婏紝缂栬緫闈㈡澘涓紝閫夋嫨Source锛屽湪閫変腑鍥句腑鐨勯夐」鍗冲彲銆
  • 涓轰粈涔閲嶅啓equals
    绛旓細鍥犱负String绫婚噸鍐欎簡equals鏂规硶 String绫籩quals鐨勬簮鐮侊細棣栧厛杩樻槸鐢==鍙锋瘮杈冿紝濡傛灉鍦板潃鐩稿悓銆備袱鑰呭綋鐒朵篃鐩稿悓銆傜劧鍚庝笅涓姝ワ紝灏閲岄潰鐨勫艰繘琛屼簡姣旇緝銆傚浜庡ぇ閮ㄥ垎Java鍘熺敓瀵硅薄锛屽ぇ澶氶兘閲嶅啓浜唀quals鏂规硶銆傚鏋滀笉纭畾锛屽彲浠trl+榧犳爣宸﹂敭鐐瑰嚮杩涜鏌ョ湅銆傛墍浠ユ垜浠湪鑷畾涔夊璞℃椂锛屽鏋滀笉閲嶅啓equals鏂规硶銆傞偅涔堟瘮杈冪殑灏嗘槸涓...
  • string绫绘病鏈閲嶅啓equals鏂规硶
    绛旓細閲嶅啓鍚鐨別quals鏂规硶鏄繖鏍峰伐浣滅殑锛氬畠棣栧厛妫鏌ュ彟涓涓璞℃槸鍚︽槸String绫荤殑瀹炰緥锛屽鏋滀笉鏄紝灏辩洿鎺ヨ繑鍥瀎alse銆傜劧鍚庯紝瀹冧細鎶婂彟涓涓璞¤浆鎹负String锛岀劧鍚庨愪釜瀛楃鍦版瘮杈冧袱涓瓧绗︿覆鐨勫唴瀹规槸鍚︾浉鍚屻備緥濡傦細java String s1 = new String("hello");String s2 = new String("hello");String s3 = new String...
  • java涓璭quals鍜==鐨勫尯鍒
    绛旓細equals()鏂规硶鏄Java.lang.Object绫荤殑涓閮ㄥ垎锛屽畠鏄敤浜庢瘮杈冨璞$殑鍐呭鏄惁鐩哥瓑鐨勬柟娉銆傚綋鎴戜滑浣跨敤equals()鏂规硶姣旇緝涓や釜瀵硅薄鏃讹紝瀹冩瘮杈冪殑鏄繖涓や釜瀵硅薄鐨勫硷紝鍗冲畠浠殑鐘舵佹垨灞炴с備緥濡傦紝濡傛灉鎴戜滑鏈変袱涓猄tring瀵硅薄锛屽畠浠寘鍚浉鍚岀殑瀛楃锛岄偅涔堜娇鐢╡quals()鏂规硶姣旇緝瀹冧滑灏嗚繑鍥瀟rue锛屽嵆浣垮畠浠湪鍐呭瓨涓殑浣嶇疆锛堝嵆...
  • JAVA涓璭quals鐨勫畾涔,鐢ㄦ硶,鏂规硶閲嶅啓鏄庝箞鍥炰簨
    绛旓細濡傛灉鎴戠悊瑙f病閿欑殑璇濅綘璇寸殑搴旇鏄渶鍒濆嚭鐜板湪Object绫閲岀殑equals鏂规硶鍚с傚湪杩欓噷鎴戣涓涓嬫垜瀵硅繖涓柟娉曠殑鐞嗚В锛屼粎渚涘弬鑰冦傝繖涓嚱鏁扮殑鐢ㄦ硶鏄細姣旇緝[璋冪敤杩欎釜鏂规硶鐨勫璞鍜孾鏂规硶浼犻掕繘鍘荤殑鍙傛暟瀵硅薄]鏄惁鐩哥瓑銆閲嶅啓杩欎釜鏂规硶锛屾剰鎬濇槸璁╀綘瀹氫箟涓や釜瀵硅薄濡備綍鎵嶇畻鏄浉绛夈傝繖鏍风粰浜嗕綘鏋佸ぇ鐨勭伒娲绘с傚洜涓烘瘮杈冧袱涓璞...
  • 扩展阅读:zookeeper java api ... equal ... java中 和equals的区别 ... javascript java ... html5与java交互 ... java uuid ... java里的equals方法搞不懂 ... java中的equals 语法 ... java中正确重写equals方法 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网