Simple question. I have an object:
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;
}
}
Whose equality is determined based on int id
(it is a database id).
Netbeans auto-generated this hashCode()
method:
@Override
public int hashCode() {
int hash = 7;
hash = 31 * hash + this.id;
return hash;
}
The question is: is there any advantage to this over just returning the (already) unique int id
?
@Override
public int hashCode() {
return id;
}
Collisions are impossible either way.
Right?