使用hashmap而不是arraylist

时间:2013-07-24 21:28:00

标签: java arraylist hashmap

我有两个课程。 一个具有用户Arrraylist的DAO(用户是User类的实例) 和另一个类中的一个方法,检查是否有用户输入我们的输入名称 如何使用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);

1 个答案:

答案 0 :(得分:2)

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

如果您通过实际User对象以外的其他内容查找,则可以使用地图,例如名称到用户的映射。

在任何一种情况下,如果您使用的是您要检查的集合,则必须正确实施equalshashCode