在java中更新数组列表

时间:2016-04-28 14:51:02

标签: java arrays arraylist

我有一个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的新手,有人可以告诉我,如果我的方法是正确的,或者我应该采用其他方法吗?

1 个答案:

答案 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中,我的回答可能不正确。