Java 使用hashmap而不是arraylist

Java 使用hashmap而不是arraylist,java,arraylist,hashmap,Java,Arraylist,Hashmap,我有两节课。 一个具有用户列表的DAO(用户是用户类的instace) 另一个类中的一个方法检查是否有输入名称的用户 如何使用Hashmap(用户名、用户)而不是用户的Arraylist public class UserDAO { private static UserDAO instance; private static String fileName = "sources/users.aaa"; //--------------------------------------------

我有两节课。 一个具有用户列表的DAO(用户是用户类的instace) 另一个类中的一个方法检查是否有输入名称的用户 如何使用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;
}
公共类UserDAO{
私有静态UserDAO实例;
私有静态字符串fileName=“sources/users.aaa”;
//--------------------------------------------------------
私有UserDAO(){
}
//--------------------------------------------------------
公共布尔存储用户(ArrayList用户){
返回IOFile.writeObject(用户,文件名);
}
//--------------------------------------------------------
公共ArrayList getUsers(){
ArrayList用户=(ArrayList)IOFile.readObject(文件名);
返回用户;
}
//--------------------------------------------------------
公共静态UserDAO getInstance(){
if(实例==null)
instance=newuserdao();
返回实例;
}
}

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

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);
User User=新用户(名字、姓氏、用户名、密码);
ArrayList users=UserDAO.getInstance().getUsers();
for(用户2:用户){
if(user.equals(user2)){
system.out.println(“错误!!”);
返回;
}
}
用户。添加(用户);
UserDAO.getInstance().storeUsers(用户);

在本例中,由于您只是尝试检查用户是否存在,因此可以使用
哈希集。集合具有恒定的时间查找。因此,它不是您的循环,而是
users.contains(user)

如果您是通过实际的
用户
对象以外的其他对象进行查找,则可以使用映射,例如名称到用户的映射


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

我希望有一个键为:username、值为:User的映射。在这种情况下,如果您希望将一个对象映射到另一个对象,则可以使用HashMap。但要知道它是什么样的,你可以在一开始就覆盖它