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 longs 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.).