在 Optional 中包含 hashCode 的目的是什么

What is the purpose of having hashCode in Optional

谁能解释一下为什么 java 人们会覆盖 Optional

中的 hascode

它允许您在 HashSet 中存储 Optionals(其值类型也覆盖 equalshashCode)并将它们用作 [=15] 中的键=]s.

如果Optional没有覆盖equalshashCode,下面的代码将输出2而不是1

Map<Optional<String>,String> map = new HashMap<>();
map.put(Optional.of("someKey"),"someValue");
map.put(Optional.of("someKey"),"someOtherValue"); 
System.out.println(map.size());

来自 JavaDoc:

Returns the hash code value of the present value, if any, or 0 (zero) if no value is present.

因此您可以检查 Optional 中的对象是否彼此相等。它也与 equals 方法的实现很好地对应。