Я хочу сохранить необязательное значение, связанное с ключом Tuple2<String, String>
.
Для этого я попытался создать class MyKey extends Tuple3<String, String, String>
с третьим необязательным полем. Может иметь значение null и не используется при проверке равенства.
Затем я переопределил методы equals () и hashCode ():
class MyKey extends Tuple3<String, String, String> {
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof myKey)) {
return false;
}
MyKey tuple = (MyKey) o;
if (f0 != null ? !f0.equals(tuple.f0) : tuple.f0 != null) {
return false;
}
if (f1 != null ? !f1.equals(tuple.f1) : tuple.f1 != null) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = f0 != null ? f0.hashCode() : 0;
result = 31 * result + (f1 != null ? f1.hashCode() : 0);
return result;
}
}
- Есть ли какие-то подводные камни, о которых я должен знать при использовании этого метода?
- Могу ли я рассмотреть какие-либо другие решения?