Java - Character.Subset hashCode() 方法



Java 的 Character.Subset hashCode() 方法檢索子集的標準雜湊碼。雜湊碼是一個整數,它表示字元或給定雜湊函式的輸入。

此方法與 Java Character.Subset equals() 方法相輔相成,因為相同的子集必須具有相同的雜湊碼。但是,反之則不成立;相同的雜湊碼並不屬於相同的子集或輸入。因此,使用 final 關鍵字來保持這兩種方法的一致性。

注意 - 此方法使用繼承的概念來建立 Subset 物件,因為 Character.Subset 類中的建構函式具有受保護的訪問許可權。因此,Character.Subset 類從另一個公共類擴充套件而來,其建構函式使用 super() 方法呼叫建立物件的 Object 類。

語法

以下是 Java Character.Subset hashCode() 方法的語法

public final int hashCode()

引數

此方法不接受任何引數。

返回值

此方法返回此物件的雜湊碼值。

獲取子集雜湊碼示例

以下示例顯示了 Java Character.Subset hashCode() 方法的使用方法。在這裡,我們用字串名稱作為其值來例項化 CharacterSubsetDemo 類物件。然後,在此物件上呼叫 hashcode() 方法以獲取此物件的雜湊碼。

package com.tutorialspoint;

public class CharacterSubsetDemo extends Character.Subset {
  
   // constructor of super class
   CharacterSubsetDemo(String s) {
      super(s); 
   }
   public static void main(String[] args) {
      CharacterSubsetDemo obj1 = new CharacterSubsetDemo("admin");
      CharacterSubsetDemo obj2 = new CharacterSubsetDemo("webmaster");
      CharacterSubsetDemo obj3 = new CharacterSubsetDemo("administrator");

      // returns a hash code value
      int retval = obj1.hashCode();
      System.out.println("Hash code of Object " + obj1 + " = " + retval);
      retval = obj2.hashCode();
      System.out.println("Hash code of Object " + obj2 + " = " + retval);
      retval = obj3.hashCode();
      System.out.println("Hash code of Object " + obj3 + " = " + retval);
   }
} 

輸出

讓我們編譯並執行上面的程式,這將產生以下結果:

Hash code of Object admin = 1704856573
Hash code of Object webmaster = 705927765
Hash code of Object administrator = 366712642

獲取子集雜湊碼示例

在下面的示例中,我們將使用相同的輸入字串例項化兩個物件,並在兩個物件上呼叫 hashCode() 方法。此方法返回建立的每個物件的雜湊碼。

package com.tutorialspoint;

public class HashCodeDemo extends Character.Subset {
   HashCodeDemo(String s) {
      super(s);
   }
   public static void main(String []args){        
      HashCodeDemo obj = new HashCodeDemo("hello");        
      int h = obj.hashCode();
      System.out.println("Hashcode of the given object is " + h);        
      int h1 = obj.hashCode();
      System.out.println("Hashcode of the given object is " + h1);
   }
}

輸出

編譯並執行上述程式後的程式輸出如下:

Hashcode of the given object is 705927765
Hashcode of the given object is 705927765

獲取子集雜湊碼示例

在下面的示例中,我們將檢查具有相同物件引用的兩個不同物件是否具有相同的雜湊碼(透過呼叫 hashCode() 方法生成)。

package com.tutorialspoint;

public class HashCodeDemo extends Character.Subset {
   HashCodeDemo(String s) {
      super(s);
   }
   public static void main(String []args){        
      HashCodeDemo obj = new HashCodeDemo("admin");
      HashCodeDemo obj1 = obj;        
      boolean b = obj1.equals(obj);
      System.out.println(b);        
      int h = obj.hashCode();
      System.out.println("Hashcode of the given object is " + h);        
      int h1 = obj1.hashCode();
      System.out.println("Hashcode of the given object is " + h1);
   }
}

輸出

讓我們編譯並執行上面的程式,輸出如下:

true
Hashcode of the given object is 705927765
Hashcode of the given object is 705927765

獲取值為 null 的子集的雜湊碼示例

假設子集物件的字串名稱為 null,以下示例顯示了 hashCode() 方法在這種情況下如何工作。

public class HashCodeDemo extends Character.Subset {
   HashCodeDemo(String s) {
      super(s);
   }
   public static void main(String []args){        
      HashCodeDemo obj1 = new HashCodeDemo(null);        
      int h = obj1.hashCode();
      System.out.println("Hashcode of the given object is " + h);
   }
}

異常

編譯並執行上述程式後,輸出顯示 NullPointerException:

Exception in thread "main" java.lang.NullPointerException: name at java.lang.Character$Subset.<init>(Character.java:615)
at HashCodeDemo.<init>(HashCodeDemo.java:6)
   at HashCodeDemo.main(HashCodeDemo.java:10)
java_lang_character.subset.htm
廣告
© . All rights reserved.