Java 使用hashmap而不是arraylist
我有两节课。 一个具有用户列表的DAO(用户是用户类的instace) 另一个类中的一个方法检查是否有输入名称的用户 如何使用Hashmap(用户名、用户)而不是用户的ArraylistJava 使用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"; //--------------------------------------------
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。但要知道它是什么样的,你可以在一开始就覆盖它