有人可以解释一下Java人为什么覆盖hascode
中的Optional
的目的吗
答案 0 :(得分:5)
它允许您在Optional
s中存储equals
(其值类型也覆盖hashCode
和HashSet
)并将它们用作HashMap
中的键
如果Optional
没有覆盖equals
和hashCode
,则以下代码将输出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;
}
方法的实现非常吻合。