在Optional中使用hashCode的目的是什么

Meh*_*lik -1 java api-design hashcode optional java-8

有人可以解释为什么java人会覆盖hascodein 的目的Optional

Era*_*ran 5

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

如果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());
Run Code Online (Sandbox Code Playgroud)