这是一个关于当我需要在 List 中查找对象的实例时如何实现 equals 方法的问题,给定一个我在其成员中拥有的实例的值。
我有一个实现等于的对象:
class User {
private String id;
public User(id) {
this.id = id;
}
public boolean equals(Object obj) {
if (!(obj instanceof User)) {
return false;
}
return ((User)obj).id.equals(this.id);
}
}
现在,如果我想在 List 中找到一些东西,我会这样做:
public function userExists(String id) {
List<Users> users = getAllUsers();
return users.contains(new User(id));
}
但也许这可能是一个更好的实现?
class User {
private String id;
public boolean equals(Object obj) {
if (!(obj instanceof User)) {
return false;
}
if (obj instanceof String) {
return ((String)obj).equals(this.id);
}
return ((User)obj).id.equals(this.id);
}
}
用这个代替:
public function userExists(String id) {
List<Users> users = getAllUsers();
return users.contains(id);
}