Package com.itextpdf.awt.geom.misc
Class HashCode
- java.lang.Object
-
- com.itextpdf.awt.geom.misc.HashCode
-
public final class HashCode extends java.lang.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 forjava.util.List.hashCode
. If you need order independent hash code just summate, multiply or XOR all elements.Suppose we have class:
The hash code calculation can be expressed in 2 forms.class Thing { long id; String name; float weight; }
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:
List.hashCode()
-
-
Field Summary
Fields Modifier and Type Field Description static int
EMPTY_HASH_CODE
The hashCode value before any data is appended, equals to 1.private int
hashCode
-
Constructor Summary
Constructors Constructor Description HashCode()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description HashCode
append(boolean value)
Appends value's hashCode to the current hashCode.HashCode
append(double value)
Appends value's hashCode to the current hashCode.HashCode
append(float value)
Appends value's hashCode to the current hashCode.HashCode
append(int value)
Appends value's hashCode to the current hashCode.HashCode
append(long value)
Appends value's hashCode to the current hashCode.HashCode
append(java.lang.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, java.lang.Object value)
Combines hashCode of previous elements sequence and value's hashCode.int
hashCode()
Returns accumulated hashCode
-
-
-
Field Detail
-
EMPTY_HASH_CODE
public static final int EMPTY_HASH_CODE
The hashCode value before any data is appended, equals to 1.- See Also:
List.hashCode()
, Constant Field Values
-
hashCode
private int hashCode
-
-
Method Detail
-
hashCode
public final int hashCode()
Returns accumulated hashCode- Overrides:
hashCode
in classjava.lang.Object
-
combine
public static int combine(int hashCode, boolean value)
Combines hashCode of previous elements sequence and value's hashCode.- Parameters:
hashCode
- previous hashCode valuevalue
- 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 valuevalue
- 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 valuevalue
- 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 valuevalue
- new element- Returns:
- combined hashCode
-
combine
public static int combine(int hashCode, java.lang.Object value)
Combines hashCode of previous elements sequence and value's hashCode.- Parameters:
hashCode
- previous hashCode valuevalue
- 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 valuevalue
- 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(java.lang.Object value)
Appends value's hashCode to the current hashCode.- Parameters:
value
- new element- Returns:
- this
-
-