I have three fields, namely
I am trying to write a function in java that returns a unique hash value (
I take it's a special version of hashCode. Otherwise you would need to overwrite hashCode
, don't define a new method. Containers like HashSet
don't get your own hash code.
long
, you do not need to use the xor (^) because it's already long. Just use the long
value.hashCode
of String with long
s for your purpose.(By the way, members should be called with lower letters and Time
should be private as well.)
You can just use HashCodeBuilder from commons-lang and not have to worry about doing this by hand anymore.
@Override
public int hashCode() {
// you pick a hard-coded, randomly chosen, non-zero, odd number
// ideally different for each class
return new HashCodeBuilder(17, 37).
append(Number1).
append(Number2).
append(Time).
toHashCode();
}
btw, it's convention in Java for variable names to start with a lowercase. You're going to find it confusing to name variables things like Number1
, Number2
, etc., as people will confuse these with the names of types (such as String
, Number
, Long
, etc.).