在Optional中具有hashCode的目的是什么

时间:2018-08-16 10:19:54

标签: java java-8 optional hashcode api-design

有人可以解释一下Java人为什么覆盖hascode中的Optional的目的吗

2 个答案:

答案 0 :(得分:5)

它允许您在Optional s中存储equals(其值类型也覆盖hashCodeHashSet)并将它们用作HashMap中的键

如果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());

答案 1 :(得分:0)

来自JavaDoc:

  

返回当前值的哈希码值(如果有),如果没有值则返回0(零)。

因此,您可以检查Optional内部的对象是否彼此相等。它也与 #include "stdafx.h" #include "iostream" #include "string" #include "windows.h" using namespace std; int main() { string user; string pass; string entry; cout << "Make your username\n"; cin >> user; cout << "Make your password\n"; cin >> pass; return 0; } 方法的实现非常吻合。