我有一个User对象列表。我已经覆盖了equal和hash方法。我想验证一个新用户是否已经在列表中,如果不是我想添加它,如果是,我想更新lastTimeSeen属性,如果在过去5秒内没有看到用户我想删除他清单。
public void updateUserList(String firstname, String lastname, String age, Long ts)
{
User newUser= new User(firstname, lastname, age,ts);
if(!listUser.contains(newUser))
listUser.add(newUser);
for (int i = 0; i < listUser.size();i++){
//if not equal to new user and ts - listUser[i].lastTimeSeen > 10 second delete user, if equal update time ?
}
}
使用此代码我可以添加新用户,但我很困惑更新或删除旧用户。我是java的新手,有人可以告诉我,如果我的方法是正确的,或者我应该采用其他方法吗?
答案 0 :(得分:0)
您必须覆盖equals
课程中的User
方法,然后才能使用此方法:
/**
* This method find the user in a user list.
* return null if no any user was found.
**/
private User findUser(ArrayList<User> listUser, User user) {
for (User u : listUser) {
if (u.equals(user)) {
return u;
}
}
return null;
}
您可以在创建新add
时覆盖ArrayList
方法,例如:
ArrayList<User> listUser = new ArrayList<User>() {
@Override
public boolean add(User user) {
User u = findUser(this, user);
if (u != null) {
//udating this user on list
return false;
}
return super.add(user);
}
};
现在,您可以修改方法updateUserList
:
public void updateUserList(String firstname, String lastname, String age, Long ts) {
listUser.add(new User(firstname, lastname, age, ts));
}
我现在不在IDE中,我的回答可能不正确。