gpt4 book ai didi

java - 使用 hashmap 代替 arraylist

转载 作者:行者123 更新时间:2023-12-02 06:52:29 25 4
gpt4 key购买 nike

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

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);

最佳答案

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

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

无论哪种情况,如果您在检查包含时使用集合,则必须正确实现 equalshashCode

关于java - 使用 hashmap 代替 arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17845129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com