簡體   English   中英

使用hashmap而不是arraylist

[英]use hashmap instead of arraylist

我有兩個課程。 一個DAO有一個用戶的Arrraylist(用戶是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);

在這種情況下,由於您只是想檢查用戶是否存在,您可以使用HashSet 集合具有恆定的時間查找。 所以不是你的循環,它只是users.contains(user)

如果您通過實際User對象以外的其他方式查找,則可以使用地圖,例如將名稱映射到用戶。

在任何一種情況下,如果您正在使用您正在檢查包含的集合,則必須正確實現equalshashCode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM