Простой вопрос. У меня есть объект:
class User {
int id;
String username;
public User() {
}
public User(int id, String username) {
this.id = id;
this.username = username;
}
@Override
public String toString() {
return id + " - " + username;
}
@Override
public int hashCode() {
int hash = 7;
hash = 31 * hash + this.id;
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final User other = (User) obj;
return this.id == other.id;
}
public void setUsername(String username) {
this.username = username;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public int getId() {
return id;
}
}
Чье равенство определяется на основе int id
(это идентификатор базы данных).
Netbeans автоматически сгенерировал этот метод hashCode()
:
@Override
public int hashCode() {
int hash = 7;
hash = 31 * hash + this.id;
return hash;
}
Вопрос в том, есть ли в этом какое-либо преимущество перед простым возвратом (уже) уникального int id
?
@Override
public int hashCode() {
return id;
}
Столкновения невозможны в любом случае.
Верно?
equals
. Что делать, если вы хотите добавить клон значения данных? - person Rogue   schedule 01.04.2014