0

我有两个班。一个具有用户数组列表(用户是用户类的实例)的 DAO 和另一个类中的一个方法,用于检查是否存在具有我们输入名称的用户我如何使用 Hashmap(用户名,用户)而不是用户的 Arraylist ?

public class UserDAO {
private static UserDAO instance;
private static String fileName = "sources/users.aaa";
//--------------------------------------------------------
private UserDAO(){

}
//--------------------------------------------------------
public boolean storeUsers(ArrayList<User> Users){
    return IOFile.writeObject(Users, fileName);
}

//--------------------------------------------------------
public ArrayList<User> getUsers(){
    ArrayList<User> Users = (ArrayList<User>) IOFile.readObject(fileName);
    return Users;
}
//--------------------------------------------------------
public static UserDAO getInstance(){
    if(instance == null)
        instance = new UserDAO();
    return instance;
}

}

另一个类中的一个方法检查是否存在具有我们输入名称的用户:

User user = new User(firstName, lastName, userName, password);
            ArrayList<User> users =  UserDAO.getInstance().getUsers();
            for (User user2 : users) {

                if (user.equals(user2)){
                    system.out.println ("Error!!");
                    return;
                }
            }
            users.add(user);
            UserDAO.getInstance().storeUsers(users);
4

1 回答 1

2

在这种情况下,由于您只是想检查用户是否存在,您可以使用HashSet. 一个集合具有恒定的时间查找。所以不是你的循环,而是users.contains(user).

如果您查找的不是实际User对象,您可以使用映射,例如名称到用户的映射。

在任何一种情况下,如果您在检查包含的地方使用集合,则必须正确地实现equals两者hashCode

于 2013-07-24T21:34:33.637 回答