Class HashCode

java.lang.Object
com.itextpdf.io.util.HashCode

public final class HashCode extends Object
This class is a convenience method to sequentially calculate hash code of the object based on the field values. The result depends on the order of elements appended. The exact formula is the same as for List.hashCode(). If you need order independent hash code just summate, multiply or XOR all elements.

Suppose we have class:


 class Thing {
     long id;
     String name;
     float weight;
 }
 
The hash code calculation can be expressed in 2 forms.

For maximum performance:


 public int hashCode() {
     int hashCode = HashCode.EMPTY_HASH_CODE;
     hashCode = HashCode.combine(hashCode, id);
     hashCode = HashCode.combine(hashCode, name);
     hashCode = HashCode.combine(hashCode, weight);
     return hashCode;
 }
 

For convenience:


 public int hashCode() {
     return new HashCode().append(id).append(name).append(weight).hashCode();
 }
 
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    The hashCode value before any data is appended, equals to 1.
    private int
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    final HashCode
    append(boolean value)
    Appends value's hashCode to the current hashCode.
    final HashCode
    append(double value)
    Appends value's hashCode to the current hashCode.
    final HashCode
    append(float value)
    Appends value's hashCode to the current hashCode.
    final HashCode
    append(int value)
    Appends value's hashCode to the current hashCode.
    final HashCode
    append(long value)
    Appends value's hashCode to the current hashCode.
    final HashCode
    append(Object value)
    Appends value's hashCode to the current hashCode.
    static int
    combine(int hashCode, boolean value)
    Combines hashCode of previous elements sequence and value's hashCode.
    static int
    combine(int hashCode, double value)
    Combines hashCode of previous elements sequence and value's hashCode.
    static int
    combine(int hashCode, float value)
    Combines hashCode of previous elements sequence and value's hashCode.
    static int
    combine(int hashCode, int value)
    Combines hashCode of previous elements sequence and value's hashCode.
    static int
    combine(int hashCode, long value)
    Combines hashCode of previous elements sequence and value's hashCode.
    static int
    combine(int hashCode, Object value)
    Combines hashCode of previous elements sequence and value's hashCode.
    final int
    Returns accumulated hashCode

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • EMPTY_HASH_CODE

      public static final int EMPTY_HASH_CODE
      The hashCode value before any data is appended, equals to 1.
      See Also:
    • hashCode

      private int hashCode
  • Constructor Details

    • HashCode

      public HashCode()
  • Method Details

    • hashCode

      public final int hashCode()
      Returns accumulated hashCode
      Overrides:
      hashCode in class Object
    • combine

      public static int combine(int hashCode, boolean value)
      Combines hashCode of previous elements sequence and value's hashCode.
      Parameters:
      hashCode - previous hashCode value
      value - new element
      Returns:
      combined hashCode
    • combine

      public static int combine(int hashCode, long value)
      Combines hashCode of previous elements sequence and value's hashCode.
      Parameters:
      hashCode - previous hashCode value
      value - new element
      Returns:
      combined hashCode
    • combine

      public static int combine(int hashCode, float value)
      Combines hashCode of previous elements sequence and value's hashCode.
      Parameters:
      hashCode - previous hashCode value
      value - new element
      Returns:
      combined hashCode
    • combine

      public static int combine(int hashCode, double value)
      Combines hashCode of previous elements sequence and value's hashCode.
      Parameters:
      hashCode - previous hashCode value
      value - new element
      Returns:
      combined hashCode
    • combine

      public static int combine(int hashCode, Object value)
      Combines hashCode of previous elements sequence and value's hashCode.
      Parameters:
      hashCode - previous hashCode value
      value - new element
      Returns:
      combined hashCode
    • combine

      public static int combine(int hashCode, int value)
      Combines hashCode of previous elements sequence and value's hashCode.
      Parameters:
      hashCode - previous hashCode value
      value - new element
      Returns:
      combined hashCode
    • append

      public final HashCode append(int value)
      Appends value's hashCode to the current hashCode.
      Parameters:
      value - new element
      Returns:
      this
    • append

      public final HashCode append(long value)
      Appends value's hashCode to the current hashCode.
      Parameters:
      value - new element
      Returns:
      this
    • append

      public final HashCode append(float value)
      Appends value's hashCode to the current hashCode.
      Parameters:
      value - new element
      Returns:
      this
    • append

      public final HashCode append(double value)
      Appends value's hashCode to the current hashCode.
      Parameters:
      value - new element
      Returns:
      this
    • append

      public final HashCode append(boolean value)
      Appends value's hashCode to the current hashCode.
      Parameters:
      value - new element
      Returns:
      this
    • append

      public final HashCode append(Object value)
      Appends value's hashCode to the current hashCode.
      Parameters:
      value - new element
      Returns:
      this