0

私は2つのクラスを持っています。ユーザーの配列リスト(ユーザーはユーザークラスのインスタンス)を持つ1つのDAOと、入力名を持つユーザーがいるかどうかを確認する別のクラスの1つのメソッドユーザーの配列リストの代わりにハッシュマップ(ユーザー名、ユーザー)を使用するにはどうすればよいですか?

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

}

入力名を持つユーザーが存在するかどうかをチェックする別のクラスの 1 つのメソッド:

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

1 に答える 1

2

この場合、ユーザーが存在するかどうかを確認しようとしているだけなので、HashSet. セットには一定時間のルックアップがあります。したがって、ループの代わりに、それは単にusers.contains(user).

Userユーザーへの名前のマッピングなど、実際のオブジェクト以外で検索する場合は、マップを使用できます。

どちらの場合でも、含まれていることを確認しているコレクションを使用している場合は、両方equalshashCode適切に実装する必要があります。

于 2013-07-24T21:34:33.637 に答える