これは、インスタンスの 1 つがメンバーにある値を指定して、リスト内のオブジェクトのインスタンスを見つける必要がある場合に equals メソッドを実装する方法についての質問です。
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);
}
}
リストで何かを見つけたい場合は、次のようにします。
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);
}