2013-07-24 35 views
0

我有兩個班。 一個DAO有用戶的Arrraylist(用戶User類的instace) 和另一個類,檢查一個方法是否存在與我們的輸入名稱的用戶或不 如何使用哈希映射(用戶名,用戶),而不是用戶的Arraylist?使用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

如果你想要一個對象映射到另一個,然後使用HashMap中。但要知道它是什麼樣子,你可能會覆蓋[我的HashMap教程](http://volodial.blogspot.com/2013/07/internal-life-of-hashmap-in-java.html)首先 –

回答

2

在這種情況下,因爲你只是想檢查用戶是否存在,你可以使用一個HashSet。一套有恆定的時間查找。因此,而不是你的循環的,這純粹是users.contains(user)

如果您正在查找實際的User對象以外的其他對象,則可以使用地圖。名稱到用戶的映射。

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

+0

我想使用鍵:用戶名和值:用戶的地圖。 –

+0

在這種情況下,你可以使用散列表 –