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
广告