我有两个课程。 一个具有用户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);
答案 0 :(得分:2)
在这种情况下,由于您只是想检查用户是否存在,因此您可以使用HashSet
。集合具有恒定的时间查找。所以不是你的循环,而是users.contains(user)
。
如果您通过实际User
对象以外的其他内容查找,则可以使用地图,例如名称到用户的映射。
在任何一种情况下,如果您使用的是您要检查的集合,则必须正确实施equals
和hashCode
。