See the documentation for hashCode and hash. hash takes Object... while hashCode takes Object. The example given is:
@Override public int hashCode() {
return Objects.hash(x, y, z);
}
Objects.hash(Object... values)should be used in cases when you want a hash of a sequence of objects, e.g. when defining your ownhashCodemethod and want a simply-coded hash for multiple values that make up the identity of your object.Objects.hashCode(Object o)should be used when you want the hash of a single object, without throwing if the object is null.Object::hashCode()should be used when you want the hash of a single object, and will throw an exception if the object is null.
Note that hash(o) and hashCode(o) won’t necessarily return the same thing! If you’re doing it for a single object, you should probably use hashCode.