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

java\u4e2d\u91cd\u5199Object\u7c7b\u7684equals\u65b9\u6cd5\u4e3a\u4ec0\u4e48\u8981\u91cd\u5199hashcode\u65b9\u6cd5?\u4e0d\u91cd\u5199\u53ef\u4ee5\u5417\uff1f

\u8981\u6c42\u662f\u9700\u8981\u91cd\u5199\u7684\uff0c\u5b9e\u8df5\u4e0a\u662f\u53ef\u4ee5\u4e0d\u91cd\u5199\u7684\uff0c\u53cd\u6b63\u7f16\u8bd1\u5668\u4e0d\u4f1a\u62a5\u9519\uff0c\u4e00\u822c\u60c5\u51b5\u4e0b\u4e5f\u4e0d\u56de\u51fa\u95ee\u9898\uff0c\u53ea\u8981\u4f60\u4e0d\u7528\u7c7b\u4f3c\u4e8eHashtable\u5b58\u653e\u8fd9\u4e9b\u5bf9\u8c61\u3002

\u4e4b\u6240\u4ee5\u8981\u6c42hashcode\u548cequals\u4e00\u81f4\uff0c\u4e3b\u8981\u8003\u8651\u7684\u8fd8\u662fHashtable\u95ee\u9898\u3002\u4e3e\u4e2a\u4f8b\u5b50\uff1a
\u5047\u5982\u4f60\u4e86\u91cd\u5199A\u7c7b\u7684equals\u65b9\u6cd5\uff0c\u800c\u4e14\u6709\u4e24\u4e2a\u5bf9\u8c61a1\u548ca2\u6309\u7167\u8fd9\u4e2a\u65b9\u6cd5\u6bd4\u8f83\u662f\u76f8\u7b49\u7684\u3002\u73b0\u5728\u4f60\u8981\u628a\u8fd9\u4e24\u5bf9\u8c61\u5206\u522b\u4f5c\u4e3a\u53e6\u5916\u4e24\u4e2a\u5bf9\u8c61v1\u548cv2\u7684key\uff08\u7c7b\u4f3c\u4e8e\u540d\u5b57\uff09\u653e\u5165Hashtable h\u4e2d\uff0c\u4e5f\u5c31\u662f\u8981\uff1a
h.put(a1,v1); h.put(a2,b2);
\u8fd9\u6837\uff0c\u7531\u4e8ea1\u548ca2\u662f\u76f8\u7b49\u7684\uff0c\u6309\u7406\u8bf4put(a2,b2);\u65f6\u5e94\u8be5\u628aa1\u8986\u76d6\u6389\u3002\u6362\u53e5\u8bdd\u8bf4\u5982\u679c\u4f60put(a1,b1);\u4e4b\u540e\uff0c\u7528get\u65b9\u6cd5h.get(a1)\u548ch.get(a2)\u5e94\u8be5\u90fd\u80fd\u7684\u5230b1\u3002\u5982\u679c\u4f60\u89c9\u5f97\u8fd9\u6837\u8bf4\u4e0d\u592a\u76f4\u89c2\uff0c\u4f60\u53ef\u4ee5\u628aa1\u3001a2\u60f3\u8c61\u6210\u4e24\u4e2aString\u3002
\u4f46\u5982\u679c\u4f60\u8981\u662f\u4e0d\u91cd\u5199hashcode\u65b9\u6cd5\uff0c\u5219\u4e0a\u8ff0\u76ee\u6807\u5b8c\u6210\u4e0d\u4e86\u3002\u56e0\u4e3a\uff0c\u867d\u7136\u6211\u4eec\u8ba4\u4e3aa1\u548ca2\u662f\u76f8\u7b49\u7684\uff0c\u5e76\u4e14equals\u7684\u786e\u5982\u6b64\uff0c\u4f46\u95ee\u9898\u662f\u54c8\u5e0c\u8868\u5979\u4e0d\u662f\u6309\u7167equals\u6765\u5224\u65ad\u4e24\u4e2a\u5bf9\u8c61\u662f\u5426\u76f8\u7b49\u7684\uff01
\u7ed9\u54c8\u5e0c\u8868\u4e00\u4e2a\u952e\u503c\uff0c\u4ed6\u4f1a\u7528hashcode\u65b9\u6cd5\u53d6\u5f97\u8fd9\u4e2a\u952e\u503c\u7684\u54c8\u5e0c\u7801\u4e5f\u5c31\u662fhashcode\u503c\uff0c\u628a\u5b83\u4f5c\u4e3a\u5b9e\u9645\u7684\u7d22\u5f15\u6765\u7ba1\u7406\u6574\u4e2a\u8868\uff0c\u5982\u679c\u4f60\u5b66\u8fc7\u6570\u636e\u7ed3\u6784\uff0c\u5e94\u8be5\u77e5\u9053\u7ba1\u7406\u7684\u8fc7\u7a0b\u3002
\u53cd\u8fc7\u6765\u8bf4\uff0c\u5047\u5982String\u7c7b\u7684\u4f5c\u8005\u4ec5\u4ec5\u91cd\u5199equals\u800c\u6ca1\u91cd\u5199hashcode\u65b9\u6cd5\uff0c\u90a3\u4e48\u6211\u4eec\u4e24\u6b21\u8fd9\u6837\u6267\u884c\uff1ah.put("aaa", b1); h.put("aaa", b2); \u4f1a\u5728Hashtable\u4e2d\u5efa\u7acb\u4e24\u4e2a\u952e\u503c\u5bf9\uff0c\u800ch.get("aaa")\u5219\u5f97\u4e0d\u5230b1\u6216b2.

\u5570\u55e6\u4e00\u53e5\u53e3\u53f7\uff0c\u4e00\u4e2a\u7f8e\u4e3d\u7684\u8bed\u8a00\u4ed6\u7684\u89c4\u5219\u90fd\u662f\u6709\u9053\u7406\u3002

1\u3001\u91cd\u5199equals\u65b9\u6cd5\u65f6\u9700\u8981\u91cd\u5199hashCode\u65b9\u6cd5\uff0c\u4e3b\u8981\u662f\u9488\u5bf9Map\u3001Set\u7b49\u96c6\u5408\u7c7b\u578b\u7684\u4f7f\u7528\uff1b
a: Map\u3001Set\u7b49\u96c6\u5408\u7c7b\u578b\u5b58\u653e\u7684\u5bf9\u8c61\u5fc5\u987b\u662f\u552f\u4e00\u7684\uff1b
b: \u96c6\u5408\u7c7b\u5224\u65ad\u4e24\u4e2a\u5bf9\u8c61\u662f\u5426\u76f8\u7b49\uff0c\u662f\u5148\u5224\u65adequals\u662f\u5426\u76f8\u7b49\uff0c\u5982\u679cequals\u8fd4\u56deTRUE\uff0c\u8fd8\u8981\u518d\u5224\u65adHashCode\u8fd4\u56de\u503c\u662f\u5426ture,\u53ea\u6709\u4e24\u8005\u90fd\u8fd4\u56deture,\u624d\u8ba4\u4e3a\u8be5\u4e24\u4e2a\u5bf9\u8c61\u662f\u76f8\u7b49\u7684\u3002
2\u3001\u7531\u4e8eObject\u7684hashCode\u8fd4\u56de\u7684\u662f\u5bf9\u8c61\u7684hash\u503c\uff0c\u6240\u4ee5\u5373\u4f7fequals\u8fd4\u56deTRUE\uff0c\u96c6\u5408\u4e5f\u53ef\u80fd\u5224\u5b9a\u4e24\u4e2a\u5bf9\u8c61\u4e0d\u7b49\uff0c\u6240\u4ee5\u5fc5\u987b\u91cd\u5199hashCode\u65b9\u6cd5\uff0c\u4ee5\u4fdd\u8bc1\u5f53equals\u8fd4\u56deTRUE\u65f6\uff0chashCode\u4e5f\u8fd4\u56deTure\uff0c\u8fd9\u6837\u624d\u80fd\u4f7f\u5f97\u96c6\u5408\u4e2d\u5b58\u653e\u7684\u5bf9\u8c61\u552f\u4e00\u3002

重写hashCode()时最重要的原因就是:无论何时,对同一个对象调用hashCode()都应该生成同样的值。如果在将一个对象用put()方法添 加进HashMap时产生一个hashCode()值,而用get()取出时却产生了另外一个 hashCode()值,那么就无法重新取得该对象了。所以,如果你的hashCode()方法依赖于对象中易变的数据,那用户就要小心了,因为此数据发 生变化时,hashCode()就会产生一个不同的hash码,相当于产生了一个不同的“键”。 

      Object的hashCode()方法,返回的是当前对象的内存地址。下次如果我们需要取一个一样的“键”对应的键值对的时候,我们就无法得到一样的 hashCode值了。因为我们后来创建的“键”对象已经不是存入HashMap中的那个内存地址的对象了。 

      我们看一个简单的例子,就能更加清楚的理解上面的意思。假定我们写了一个类:Person (人),我们判断一个对象“人”是否指向同一个人,只要知道这个人的身份证号一直就可以了。 



先来个没有重写Code类的hashcode()的例子吧,看看是什么效果:

package com.fit;  
  
import java.util.HashMap;  
  
/** 
 * 身份证类 
 *  
 * @author ZYD 
 *  
 */  
public class Code {  
  
    /** 
     * 身份证号码,一旦确定就不能更改 
     */  
    private final int id;  
  
    public int getId() {  
        return id;  
    }  
  
    /** 
     * 通过构造方法确定身份证号码 
     *  
     * @param id 
     */  
    public Code(int id) {  
        this.id = id;  
    }  
  
    /** 
     * 重写equals()方法 
     */  
    public boolean equals(Object o) {  
        // 如果地址一样,则两个对象相同  
        if (this == o) {  
            return true;  
        }  
        // 如果两个对象是同一类型,则比较其属性值是否都相同。如果都相同,则说明两个对象也相同;否则,说明这两个对象不相同。  
        if (o instanceof Code) {  
            Code co = (Code) o;  
            boolean b = (co.id == this.id);  
            return b;  
        }  
        return false;  
    }  
  
    /** 
     * 重写toString()方法 
     */  
    public String toString() {  
        return "【身份证】:" + id;  
    }  
      
    /** 
     * 测试 
     * @param args 
     */  
    public static void main(String[] args) {  
          
         HashMap<Code, Person> map = new HashMap<Code, Person>();  
           
         Person p1 = new Person(new Code(10001),"张三");  
         Person p2 = new Person(new Code(10002),"李四");  
           
         map.put(p1.getCode(), p1);  
         map.put(p2.getCode(), p2);  
           
         System.out.println("HashMap 中存放的人员信息:
"+map);  
           
         //张三改名为张山,身份证号不变。  
         Person p3 = new Person(new Code(10001),"张山");  
         map.put(p3.getCode(), p3);  
           
         System.out.println("张三改名为张山后 HashMap 中存放的人员信息:
"+map);  
           
         //查找身份证为10001 的人员信息  
         System.out.println("查找身份证为:10001 的人员信息:"+map.get(new Code(10001)));  
    }  
}  
  
/** 
 * 人类 
 * @author Administrator 
 * 
 */  
class Person {  
  
    /** 
     * 每一个成人都有一个身份证 
     */  
    private Code code;  
  
    /** 
     * 姓名 
     */  
    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;  
    }  
  
    /** 
     * 重写equals()方法 当两个人得身份证号相同以及姓名相同时,表示这两个人是同一个人。 
     */  
    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;  
    }  
  
    /** 
     * 重写toString()方法 
     */  
    public String toString() {  
        return "【姓名】:" + name + "  ";  
    }  
}



运行结果:

 

HashMap 中存放的人员信息:
{【身份证】:10002=【姓名】:李四  , 【身份证】:10001=【姓名】:张三  }
张三改名为张山后 HashMap 中存放的人员信息:
{【身份证】:10002=【姓名】:李四  , 【身份证】:10001=【姓名】:张三  , 【身份证】:10001=【姓名】:张山  }
查找身份证为:10001 的人员信息:null

 

从上面的结果可以看出:


我们所做的更新和查找操作都失败了。失败的原因就是我们的身份证类: Code 没有覆写 hashCode() 方法。这个时候,当查找一样的身份证号码的键值对的时候,使用的是默认的对象的内存地址来进行定位。这样,后面的所有的身份证号对象

new Code(10001) 产生的 hashCode () 值都是不一样的,所以导致操作失败。

 

 


 重写Code类的hashcode(),代码上:


package com.fit;  
  
import java.util.HashMap;  
  
/** 
 * 身份证类 
 *  
 * @author ZYD 
 *  
 */  
public class Code {  
  
    /** 
     * 身份证号码,一旦确定就不能更改 
     */  
    private final int id;  
  
    public int getId() {  
        return id;  
    }  
  
    /** 
     * 通过构造方法确定身份证号码 
     *  
     * @param id 
     */  
    public Code(int id) {  
        this.id = id;  
    }  
  
    /** 
     * 重写equals()方法 
     */  
    public boolean equals(Object o) {  
        // 如果地址一样,则两个对象相同  
        if (this == o) {  
            return true;  
        }  
        // 如果两个对象是同一类型,则比较其属性值是否都相同。如果都相同,则说明两个对象也相同;否则,说明这两个对象不相同。  
        if (o instanceof Code) {  
            Code co = (Code) o;  
            boolean b = (co.id == this.id);  
            return b;  
        }  
        return false;  
    }  
  
    /** 
     * 重写hashcode()方法,以身份证号码作为hash码。 
     *  
     * @return 
     */  
    public int hashCode() {  
        return id;  
    }  
  
    /** 
     * 重写toString()方法 
     */  
    public String toString() {  
        return "【身份证】:" + id;  
    }  
      
    /** 
     * 测试 
     * @param args 
     */  
    public static void main(String[] args) {  
          
         HashMap<Code, Person> map = new HashMap<Code, Person>();  
           
         Person p1 = new Person(new Code(10001),"张三");  
         Person p2 = new Person(new Code(10002),"李四");  
           
         map.put(p1.getCode(), p1);  
         map.put(p2.getCode(), p2);  
           
         System.out.println("HashMap 中存放的人员信息:
"+map);  
           
         //张三改名为张山,身份证号不变。  
         Person p3 = new Person(new Code(10001),"张山");  
         map.put(p3.getCode(), p3);  
           
         System.out.println("张三改名为张山后 HashMap 中存放的人员信息:
"+map);  
           
         //查找身份证为10001 的人员信息  
         System.out.println("查找身份证为:10001 的人员信息:"+map.get(new Code(10001)));  
    }  
}  
  
/** 
 * 人类 
 * @author Administrator 
 * 
 */  
class Person {  
  
    /** 
     * 每一个成人都有一个身份证 
     */  
    private Code code;  
  
    /** 
     * 姓名 
     */  
    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;  
    }  
  
    /** 
     * 重写equals()方法 当两个人得身份证号相同以及姓名相同时,表示这两个人是同一个人。 
     */  
    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;  
    }  
  
    /** 
     * 重写toString()方法 
     */  
    public String toString() {  
        return "【姓名】:" + name + "  ";  
    }  
}


运行效果:

 

HashMap 中存放的人员信息:
{【身份证】:10001=【姓名】:张三  , 【身份证】:10002=【姓名】:李四  }
张三改名为张山后 HashMap 中存放的人员信息:
{【身份证】:10001=【姓名】:张山  , 【身份证】:10002=【姓名】:李四  }
查找身份证为:10001 的人员信息:【姓名】:张山 



我认为首先要认清equals方法和hashcode方法是用来干嘛的,然后这两个之间什么关系就够了为什么重写equals()就一定要重写hashCode()方



  • 鍏充簬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 ... java里的equals方法搞不懂 ... javascript java ... zookeeper与java交互小结 ... equal ... html5与java交互 ... java中 和equals的区别 ... equals用法例子java ... java中正确重写equals方法 ...

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